#lock #safe #testing #struct #atomic #constructor

safe-lock

一个具有常量构造函数且无 unsafe 的锁结构。

4 个版本

0.1.3 2021年3月23日
0.1.2 2021年3月22日
0.1.1 2021年3月21日
0.1.0 2021年3月18日

#777并发

Download history 4480/week @ 2024-03-16 4195/week @ 2024-03-23 4068/week @ 2024-03-30 4836/week @ 2024-04-06 4263/week @ 2024-04-13 5047/week @ 2024-04-20 4490/week @ 2024-04-27 4448/week @ 2024-05-04 5024/week @ 2024-05-11 4236/week @ 2024-05-18 3971/week @ 2024-05-25 4468/week @ 2024-06-01 3428/week @ 2024-06-08 3508/week @ 2024-06-15 4920/week @ 2024-06-22 1664/week @ 2024-06-29

14,132 每月下载量
13 个 Crates (5 直接) 中使用

Apache-2.0

13KB
58

crates.io version license: Apache 2.0 unsafe forbidden pipeline status

safe-lock

一个简单的 SafeLock 结构。

用例

  • 顺序运行测试
  • 防止对原子值进行并发操作
  • 防止对 Rust 运行时之外的数据和系统进行并发操作

功能

  • 常量构造函数
  • 仅依赖于 std
  • 禁止(unsafe 代码)
  • 100% 测试覆盖率

限制

  • 不是一个 Mutex<T>。不包含值。
  • 未优化。在自旋锁中使用 AtomicBool,而不是快速的操作系统锁。
  • 不是公平锁。如果多个线程在循环中获取锁,有些可能永远无法获取。

替代方案

示例

让一些测试顺序执行,以免相互干扰

use safe_lock::SafeLock;
static LOCK: SafeLock = SafeLock::new();

[#test]
fn test1() {
    let _guard = LOCK.lock();
    // ...
}

[#test]
fn test2() {
    let _guard = LOCK.lock();
    // ...
}

Cargo Geiger 安全报告


Metric output format: x/y
    x = unsafe code used by the build
    y = total unsafe code found in the crate

Symbols: 
    🔒  = No `unsafe` usage found, declares #![forbid(unsafe_code)]= No `unsafe` usage found, missing #![forbid(unsafe_code)]
    ☢️  = `unsafe` usage found

Functions  Expressions  Impls  Traits  Methods  Dependency

0/0        0/0          0/0    0/0     0/0      🔒  safe-lock 0.1.3

0/0        0/0          0/0    0/0     0/0    

变更日志

  • v0.1.3 - 增加测试覆盖率
  • v0.1.2 - 使用 AcquireRelease 排序
  • v0.1.1 - 更新文档
  • v0.1.0 - 初版

快乐的贡献者 🙂

修复错误和添加功能既容易又快。向我们发送拉取请求,我们打算

  • 始终在24小时内响应
  • 提供清晰具体反馈
  • 立即为您的接受变更发布新版本

许可:Apache-2.0

无运行时依赖