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 并发
312,134 每月下载量
用于 2,268 个 crates (27 直接)
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
有两个方法可以简化并行处理数据,foreach
和 map
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");