29 个版本 (4 个重大更新)
0.6.7 | 2020 年 12 月 6 日 |
---|---|
0.6.6 | 2020 年 12 月 1 日 |
0.6.5 | 2020 年 11 月 26 日 |
0.6.3 | 2020 年 9 月 11 日 |
0.2.0 | 2020 年 9 月 4 日 |
#623 in 并发
每月 257 次下载
用于 2 crates
65KB
1K SLoC
fast-async-mutex
这是一个提供异步锁定机制的库,它使用自旋锁算法。它可能非常高效,因为当互斥锁尝试获取数据失败时,它会将这些控制权返回给异步运行时。这个库只基于原子操作构建,不使用其他 std 同步数据结构,这使得这个库非常快速。
示例
use fast_async_mutex::mutex::Mutex;
#[tokio::main]
async fn main() {
let mutex = Mutex::new(10);
let guard = mutex.lock().await;
assert_eq!(*guard, 10);
}
基准测试
基准测试的结果是在 MacBook Pro (16-inch, 2019) 2,3 GHz 8-Core Intel Core i9 16GB RAM
上运行的。测试可以在 benchmarks 目录 中找到。
running 35 tests
test mutex::fast_async_mutex::tests::concurrency_without_waiting ... bench: 49,844 ns/iter (+/- 3,223)
test mutex::fast_async_mutex::tests::create ... bench: 0 ns/iter (+/- 0)
test mutex::fast_async_mutex::tests::step_by_step_without_waiting ... bench: 22,685 ns/iter (+/- 18,466)
test mutex::fast_async_mutex_ordered::tests::concurrency_without_waiting ... bench: 50,173 ns/iter (+/- 1,163)
test mutex::fast_async_mutex_ordered::tests::create ... bench: 0 ns/iter (+/- 0)
test mutex::fast_async_mutex_ordered::tests::step_by_step_without_waiting ... bench: 22,007 ns/iter (+/- 2,974)
test mutex::futures::tests::concurrency_without_waiting ... bench: 76,535 ns/iter (+/- 12,181)
test mutex::futures::tests::create ... bench: 92 ns/iter (+/- 17)
test mutex::futures::tests::step_by_step_without_waiting ... bench: 23,109 ns/iter (+/- 7,627)
test mutex::smol::tests::concurrency_without_waiting ... bench: 66,312 ns/iter (+/- 4,924)
test mutex::smol::tests::create ... bench: 0 ns/iter (+/- 0)
test mutex::smol::tests::step_by_step_without_waiting ... bench: 28,466 ns/iter (+/- 3,385)
test mutex::tokio::tests::concurrency_without_waiting ... bench: 60,833 ns/iter (+/- 11,640)
test mutex::tokio::tests::create ... bench: 6 ns/iter (+/- 3)
test mutex::tokio::tests::step_by_step_without_waiting ... bench: 31,924 ns/iter (+/- 9,327)
test rwlock::fast_async_mutex::tests::concurrency_read ... bench: 53,613 ns/iter (+/- 4,125)
test rwlock::fast_async_mutex::tests::concurrency_write ... bench: 50,652 ns/iter (+/- 1,181)
test rwlock::fast_async_mutex::tests::create ... bench: 0 ns/iter (+/- 0)
test rwlock::fast_async_mutex::tests::step_by_step_read ... bench: 23,161 ns/iter (+/- 5,225)
test rwlock::fast_async_mutex::tests::step_by_step_writing ... bench: 23,330 ns/iter (+/- 4,819)
test rwlock::fast_async_mutex_ordered::tests::concurrency_read ... bench: 50,208 ns/iter (+/- 896)
test rwlock::fast_async_mutex_ordered::tests::concurrency_write ... bench: 50,227 ns/iter (+/- 1,984)
test rwlock::fast_async_mutex_ordered::tests::create ... bench: 0 ns/iter (+/- 0)
test rwlock::fast_async_mutex_ordered::tests::step_by_step_read ... bench: 23,059 ns/iter (+/- 2,393)
test rwlock::fast_async_mutex_ordered::tests::step_by_step_writing ... bench: 22,074 ns/iter (+/- 5,107)
test rwlock::smol::tests::concurrency_read ... bench: 55,767 ns/iter (+/- 1,843)
test rwlock::smol::tests::concurrency_write ... bench: 85,189 ns/iter (+/- 2,852)
test rwlock::smol::tests::create ... bench: 1 ns/iter (+/- 0)
test rwlock::smol::tests::step_by_step_read ... bench: 22,644 ns/iter (+/- 1,688)
test rwlock::smol::tests::step_by_step_writing ... bench: 25,769 ns/iter (+/- 2,010)
test rwlock::tokio::tests::concurrency_read ... bench: 52,960 ns/iter (+/- 939)
test rwlock::tokio::tests::concurrency_write ... bench: 60,748 ns/iter (+/- 4,604)
test rwlock::tokio::tests::create ... bench: 5 ns/iter (+/- 1)
test rwlock::tokio::tests::step_by_step_read ... bench: 31,437 ns/iter (+/- 6,948)
test rwlock::tokio::tests::step_by_step_writing ... bench: 29,766 ns/iter (+/- 8,081)
test result: ok. 0 passed; 0 failed; 0 ignored; 35 measured; 0 filtered out
许可证
根据以下任一许可证授权
- Apache 许可证 2.0 版(《LICENSE-APACHE》或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则您根据 Apache-2.0 许可证定义的任何旨在包含在本作品中的有意贡献,均应按上述方式双重许可,而无需附加条款或条件。