1 个不稳定版本
使用旧的 Rust 2015
0.2.2 | 2020年6月14日 |
---|
#748 in 并发
9KB
166 行
围绕 std::Thread 的可停止的轻量级包装。
使用 std::sync::atomic::AtomicBool
和 std::thread
创建可停止的线程。
接口与 std::thread::Thread
(或者更确切地说,std::thread::JoinHandle
)非常相似,除了每个传入的闭包都必须接受一个 stopped
参数,允许检查是否请求了停止。
由于所有停止都必须优雅地进行,即通过请求子线程停止,如果需要,可以返回部分值。
示例
use killable_thread;
let handle = killable_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();