#thread #context #golang #scope #scoped #cooperative #crossbeam

ctx-thread

基于 crossbeam 和 golang 的 context 包的协同、作用域线程

2 个版本

0.1.1 2020年10月22日
0.1.0 2020年10月22日

#622并发

自定义许可

22KB
235

tests Actions Status Cargo Documentation

Context-thread

在上下文中运行的线程。

大多数情况下,生命周期超过父线程的线程被视为代码问题。《code>ctx-thread 确保在返回作用域之前将所有线程连接。子线程可以访问上下文对象,它们可以使用它来轮询线程组的状态。如果其中一个线程崩溃,上下文将被取消。

作用域

此库基于 crossbeam 的作用域线程

use ctx_thread::scope;

let people = vec![
    "Alice".to_string(),
    "Bob".to_string(),
    "Carol".to_string(),
];

scope(|ctx| {
    for person in &people {
        ctx.spawn(move |_| {
            println!("Hello, {}", person);
        });
    }
}).unwrap();

上下文

除了引用外部作用域之外,线程还可以检查额外的方法和在需要时返回

use ctx_thread::scope;


scope(|ctx| {
    ctx.spawn(|ctx| {
        while ctx.active() {
            // do work
        }
    });

    ctx.spawn(|ctx| {
        ctx.cancel();
    });
}).unwrap();

请注意,这些基于上下文的取消是一种协同调度形式。即使上下文已过期,线程仍然可以阻塞。

依赖项

~115KB