3 个版本
使用旧的 Rust 2015
0.1.2 | 2015 年 12 月 14 日 |
---|---|
0.1.1 | 2015 年 1 月 13 日 |
0.1.0 | 2015 年 1 月 13 日 |
在 #initializer 中排名第 10
7KB
69 行代码(不包括注释)
spinlock-rs
此 Rust 库实现了一个简单的 自旋锁。
构建
只需运行 cargo build
即可。
用法
在 Spinlock
上调用 lock
时,您将获得数据的引用。当此引用被丢弃时,锁将被解锁。
extern crate spinlock;
use spinlock::Spinlock;
fn main()
{
let spinlock = Spinlock::new(0);
// Modify the data
{
let mut data = spinlock.lock();
*data = 2;
}
// Read the data
let answer =
{
let data = spinlock.lock();
*data
};
println!("Answer is {}", answer);
}
要共享锁,可以使用 Arc<Spinlock<T>>
。
备注
此锁的行为类似于 std::sync::Mutex
。它在以下方面有所不同:
- 在失败的情况下,锁不会被毒化;
- 锁也可以从普通线程(如裸
pthread
)中使用。