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
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
)中,这样多个输出节点可以访问相同的值,而无需进行 Clone
和 Send
操作。
每个 Worker
在相应的 mpsc::Receiver
上监听 Job
。在接收到新的 Job
后,它立即开始执行。完成后,Worker
通过自己的 mpsc::Sender
发送消息,包含 Node
、其输出(Data
)以及 Job
的唯一标识符(usize
)。
图
建设中