5 个不稳定版本
使用旧的 Rust 2015
0.3.1 | 2020 年 2 月 26 日 |
---|---|
0.3.0 | 2019 年 9 月 14 日 |
0.2.0 | 2018 年 5 月 15 日 |
0.1.1 | 2018 年 5 月 12 日 |
0.1.0 | 2018 年 5 月 12 日 |
#868 in 并发
14KB
220 行
semalock
semalock 是一个 Rust 库,用于以高效的方式控制 POSIX 操作系统上文件的并发访问。
它结合使用 POSIX 命名信号量和独占文件锁,以安全高效地获取对文件的独占访问。在 Linux 上观察到特别高效,在 8192 个进程的情况下,锁定开销低于 CPU 时间的 5%。
用法
以下展示了 semalock 的用法。此程序打开 /some/file
并向其中追加一些文本。尝试使用 GNU parallel 来衡量多个竞争进程之间的性能。
// Acquire and open a file and semaphore
let mut lock = Semalock::new(Path::new("/some/file"));
// Do some stuff to the file
lock.with(|lock| {
lock.file
.seek(SeekFrom::End())
.and_then(|_| lock.file.write(b"hello world\n"))
});
支持的操作系统
以下操作系统已进行测试
- GNU/Linux 4.16
以下操作系统尚未进行测试但应能工作
- FreeBSD
- GNU/Linux 2.6+
- macOS 10.4+
- NetBSD
- OpenBSD
支持的操作系统必须支持以下功能
- flock
- sem_get_value
- sem_open
- sem_post
- sem_timedwait
- sem_unlink
以下将无法工作
- Windows NT
发布说明
0.3.1 - 2020-02-25
- 修复 x86 上的编译错误
0.3.0 - 2019-09-13
Semalock::with
现在接受FnOnce
而不是Fn
。- 各种项目卫生更改
0.2.0 - 2018-05-14
- 首次发布。
开发者说明
要运行测试,请执行以下命令
cargo test
要发布创建项,请执行以下操作
- 编辑
Cargo.toml
,适当地提高版本号。 - 编辑
README.md
,在发布说明中添加条目。 - 提交这些更改并将其推送到
master
。 - 创建并推送一个以 "v" 开头的标签 - 例如 "v0.4.0"
作者
Jason Longshore [email protected]
依赖项
~2–10MB
~108K SLoC