1 个不稳定版本
0.1.0 | 2022年8月1日 |
---|
#1643 在 算法
8KB
86 行
sharded-counter
这是一个并发计数器,适用于多个线程需要快速分配唯一 ID 的场景。它通过一个全局的 CounterPool
来工作,该池在所有线程之间共享。每个线程从池中创建一个 LocalCounter
,它分配一部分唯一数字。这些数字可以被迭代,每次用完时,计数器从全局池中分配更多的新数字。
示例
use sharded_counter::CounterPool;
use std::{sync::Arc, thread};
let num_threads = thread::available_parallelism().unwrap().get();
let pool = Arc::new(CounterPool::new());
let handles: Vec<_> = (0..num_threads)
.map(|_| {
let pool = pool.clone();
thread::spawn(move || {
let _counts: Vec<_> = pool.counter().take(1_000_000).collect();
})
})
.collect();
for handle in handles {
handle.join().unwrap();
}
许可证
MIT 许可证。
依赖项
~48KB