7 个版本
使用旧的 Rust 2015
0.2.1 | 2016 年 5 月 6 日 |
---|---|
0.2.0 | 2016 年 5 月 6 日 |
0.1.4 | 2016 年 3 月 12 日 |
#765 在 并发 中
1,848 每月下载
用于 5 个 crate(其中 4 个直接使用)
7KB
138 行
一个可停止的、轻量级的 std::Thread 包装器。
使用 std::sync::atomic::AtomicBool
和 std::thread
来创建可停止的线程。
接口与 std::thread::Thread
(或者说更确切地说是 std::thread::JoinHandle
)非常相似,除了每个传入的闭包都必须接受一个 stopped
参数,允许检查是否请求了停止。
由于所有停止都必须优雅地(即通过请求子线程停止)进行,如果需要,可以返回部分值。
示例
use stoppable_thread;
let handle = stoppable_thread::spawn(|stopped| {
let mut count: u64 = 0;
while !stopped.get() {
count += 1
}
count
});
// work in main thread
// stop the thread. we also want to collect partial results
let child_count = handle.stop().join().unwrap();