3个版本
使用旧的Rust 2015
0.1.2 | 2018年3月24日 |
---|---|
0.1.1 | 2018年3月24日 |
0.1.0 | 2018年3月24日 |
#52 在 #并发
每月 28 次下载
用于 vampire_api
87KB
1.5K SLoC
LockFreeHashMap-rs
为Rust编写的并发、无锁哈希表。
这是由 Cliff Click 博士创建的无锁哈希表的实现。Click 发布了关于他的哈希表的演讲。此外,还有可用的“参考”Java代码在这里和更近期的在这里。
入门指南
这个crate可以在crates.io上找到。
要在项目中使用此crate,请将以下内容添加到您的 Cargo.toml
文件
[dependencies]
lockfreehashmap = "0.1"
然后添加到您的项目根文件
extern crate lockfreehashmap;
示例
extern crate lockfreehashmap;
use lockfreehashmap::{self, LockFreeHashMap};
let map = LockFreeHashMap::<u8, u8>::new();
let insert_guard = lockfreehashmap::pin();
for i in 1..4 {
map.insert(i, i, &insert_guard);
}
drop(insert_guard);
let map = ↦
lockfreehashmap::scope(|scope| {
// Spawn multiple threads, e.g. for a server that executes some actions on a loop
for _ in 0..16 {
scope.spawn(|| {
loop {
let mut line = String::new();
::std::io::stdin().read_line(&mut line).unwrap();
let iter = line.split_whitespace();
let command: &str = iter.next().unwrap();
let key: u8 = iter.next().unwrap().parse();
let value: u8 = iter.next().unwrap().parse();
let guard = lockfreehashmap::pin();
let _result = match command {
"insert" => map.insert(key, value, &guard),
_ => {/* ... */},
};
drop(guard);
}
});
}
});
许可证
GNU通用公共许可证v3.0或任何后续版本
有关详细信息,请参阅LICENSE和LICENSE.LESSER。
依赖项
~1MB
~12K SLoC