#loops #handle #tokio #easy #core #network-programming

tk-easyloop

线程局部循环和其他循环助手

2个版本

使用旧的Rust 2015

0.1.1 2017年1月30日
0.1.0 2017年1月6日

#1655异步

Download history 1/week @ 2023-12-10 5/week @ 2023-12-17 1/week @ 2023-12-24 5/week @ 2024-01-07 1/week @ 2024-01-14 4/week @ 2024-02-11 18/week @ 2024-02-18 26/week @ 2024-02-25 16/week @ 2024-03-03 17/week @ 2024-03-10 20/week @ 2024-03-17

79 每月下载量
6 crate 中使用

MIT/Apache

9KB
56

Tokio Easy Loop

状态测试版
文档http://docs.rs/tk-easyloop/

围绕tokio的主循环包装器,提供线程局部循环,

  • 避免在每个函数中填充处理
  • 大部分避免了常见的错误线程 'foo' 发生恐慌: '没有正在运行的Task',通过为所有涉及futures的代码提供方便的 run 函数

示例

extern crate futures;
extern crate tk_easyloop;

use std::time::Duration;
use tk_easyloop::{run, timeout};

fn main() {
    run(|| {
        // should return some future, let's use a timeout
        timeout(Duration::new(1, 0))
    }).unwrap();
}

多线程示例

此crate使用线程局部存储来存储循环,但这并不意味着多线程不起作用。也可以使用多个线程。

extern crate tk_easyloop;
use std::thread;
use std::time::Duration;
use tk_easyloop::{run, timeout};

fn main() {
    let mut threads = Vec::new();
    for thread_no in 0..10 {
        threads.push(thread::spawn(move || {
            run(|| {
                timeout(Duration::new(1, 0))
            })
        }))
    }
    for t in threads {
        t.join().unwrap().unwrap();
    }
}

examples/multi-threaded.rs更多示例。

许可

根据以下任一许可授权:

贡献

除非您明确声明,否则您有意提交以包含在作品中并由您定义的Apache-2.0许可证中的任何贡献,均应按上述方式双重许可,而无需任何额外的条款或条件。

依赖项

~6MB
~93K SLoC