#数据 # #初始化器 #废弃 #同步 #自旋 #包含

废弃 nightly spinlock

已废弃!请使用 crate spin 代替。这是一个简单的自旋锁。它可以包含数据,可以在不使用 std 的情况下使用,并提供静态初始化器。

3 个版本

使用旧的 Rust 2015

0.1.2 2015 年 12 月 14 日
0.1.1 2015 年 1 月 13 日
0.1.0 2015 年 1 月 13 日

#initializer 中排名第 10

MIT 许可证

7KB
69 行代码(不包括注释)

spinlock-rs

Build Status

文档

此 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)中使用。

无运行时依赖