8 个不稳定版本 (3 个破坏性更新)

0.3.1 2019年4月27日
0.3.0 2019年4月3日
0.2.2 2019年3月26日
0.1.1 2019年3月17日
0.0.1 2019年3月12日

#729 in 并发


被用于 rbuild

MIT 许可证

36KB
528

ParaGraphs - 并行图执行库

建设中

理解 ParaGraphs

线程池

ThreadPool 管理一个或多个 Worker。每个 Worker 负责管理一个线程。执行单元 Node 通过一个 mpsc::Channel 移入 Worker 线程,并在执行完成后通过第二个通道返回。Graph 负责将 Node 移出通道。

ThreadPool 接收 Job,它由一个 Node、输入(Vec<Arc<Data>>)和一个唯一标识符(usize)组成。然后 ThreadPool 通过发送到一个 mpsc::Sender 将每个工作调度到它的一个工作线程。由于 Job 的内容会被移动,所以 Node 需要是 Send 的,并且 Data 需要是 Send + Sync 的。输入被捕获在原子引用计数的指针向量(Arc)中,这样多个输出节点可以访问相同的值,而无需进行 CloneSend 操作。

每个 Worker 在相应的 mpsc::Receiver 上监听 Job。在接收到新的 Job 后,它立即开始执行。完成后,Worker 通过自己的 mpsc::Sender 发送消息,包含 Node、其输出(Data)以及 Job 的唯一标识符(usize)。

建设中

无运行时依赖