#thread #automatic #managed #drop

managed-thread

真正的无所畏惧的并发!创建在不再需要时自动销毁的线程

3 个版本

0.0.3 2020年11月16日
0.0.2 2020年8月6日
0.0.1 2020年1月24日

#615并发

MIT 许可证

9KB
94

managed-thread

crates.io

一个 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();

无运行时依赖