#thread #stop #stopped #atomic #sync #stoppable #cooperatively

killable_thread

一个线程包装器,允许它轻松地合作终止

1 个不稳定版本

使用旧的 Rust 2015

0.2.2 2020年6月14日

#748 in 并发

MIT 许可证

9KB
166

围绕 std::Thread 的可停止的轻量级包装。

使用 std::sync::atomic::AtomicBoolstd::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();

无运行时依赖项