9 个版本

0.2.0 2020年1月19日
0.1.4 2018年10月28日
0.1.3 2018年8月5日
0.1.2 2017年1月8日
0.0.1 2015年4月20日

#56 in 并发

Download history 54724/week @ 2024-03-14 58175/week @ 2024-03-21 57751/week @ 2024-03-28 52335/week @ 2024-04-04 60058/week @ 2024-04-11 60346/week @ 2024-04-18 60176/week @ 2024-04-25 58573/week @ 2024-05-02 62766/week @ 2024-05-09 68886/week @ 2024-05-16 61927/week @ 2024-05-23 71072/week @ 2024-05-30 72858/week @ 2024-06-06 80494/week @ 2024-06-13 77768/week @ 2024-06-20 66493/week @ 2024-06-27

312,134 每月下载量
用于 2,268 个 crates (27 直接)

MIT 许可证

44KB
786

Rust 对 Apple 的 Grand Central Dispatch (GCD) 的封装。

GCD 是一种任务并行实现的调度器,允许将任务提交到队列中,以便它们可以执行。

更多信息请参见 Apple 的 Grand Central Dispatch 参考

串行队列

串行队列按照先进先出的顺序依次执行任务。应用程序的主队列是串行的,可以通过 Queue::main 函数访问。

use dispatch::{Queue, QueueAttribute};

let queue = Queue::create("com.example.rust", QueueAttribute::Serial);
queue.async(|| println!("Hello"));
queue.async(|| println!("World"));

并发队列

并发调度队列并行执行任务。GCD 提供了全局并发队列,可以通过 Queue::global 函数访问。

Queue 有两个方法可以简化并行处理数据,foreachmap

use dispatch::{Queue, QueuePriority};

let queue = Queue::global(QueuePriority::Default);

let mut nums = vec![1, 2];
queue.foreach(&mut nums, |x| *x += 1);
assert!(nums == [2, 3]);

let nums = queue.map(nums, |x| x.to_string());
assert!(nums[0] == "2");

无运行时依赖