3 个版本
0.0.3 | 2020年11月16日 |
---|---|
0.0.2 | 2020年8月6日 |
0.0.1 | 2020年1月24日 |
#615 在 并发
9KB
94 行
managed-thread
一个 Rust 库,允许你创建在不再需要时自动销毁的线程
安装
将以下内容添加到你的 Cargo.toml 中
[dependencies]
managed-thread="0.0.1"
lib.rs
:
此库的目标是允许你创建工作线程,同时可以确信它们将被清理,你不会“泄漏”线程。
这是通过将一个 Signal 对象传递给新创建的线程来实现的。线程负责检查此信号以确定是否应该终止。
因此,此库的概念并非绝对无懈可击。由于线程的性质,在 Rust 中没有强制终止线程的方法。因此,我们依赖于线程表现得很好,并在被要求时终止。
use managed_thread;
// channel to communicate back to main thread
let (tx, rx) = std::sync::mpsc::channel::<()>();
let owned_thread = managed_thread::spawn_owned(move |signal| {
while signal.should_continue() {
// do some work
}
// Send a signal that this thread is exiting
tx.send(())
});
// The owned thread will now terminate
drop(owned_thread);
// confirm that the managed_thread has terminated
rx.recv().unwrap();