#thread #stopped #atomic #stop #sync #passed #stoppable

stoppable_thread

线程包装器,允许其易于协作地停止

7 个版本

使用旧的 Rust 2015

0.2.1 2016 年 5 月 6 日
0.2.0 2016 年 5 月 6 日
0.1.4 2016 年 3 月 12 日

#765并发

Download history 155/week @ 2024-04-06 355/week @ 2024-04-13 275/week @ 2024-04-20 228/week @ 2024-04-27 141/week @ 2024-05-04 248/week @ 2024-05-11 142/week @ 2024-05-18 151/week @ 2024-05-25 255/week @ 2024-06-01 228/week @ 2024-06-08 181/week @ 2024-06-15 403/week @ 2024-06-22 274/week @ 2024-06-29 571/week @ 2024-07-06 496/week @ 2024-07-13 464/week @ 2024-07-20

1,848 每月下载
用于 5 个 crate(其中 4 个直接使用)

MIT 许可证

7KB
138

一个可停止的、轻量级的 std::Thread 包装器。

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

无运行时依赖