Expand description
Different worklist implementations.
Modules§
- Worklist implementation based on globally locked queues. The type of queue can be any type which implements the
Queue
trait. This includesVec
for LIFO queues,VecDeque
for FIFO queues, andBinaryHeap
for priority queues. - Worklist based on the
crossbeam-deque
crate. - Naive implementation of a worklist based on a
VecDeque
and multi-producer-single-consumer channels.
Traits§
- A worklist keeps track of graph nodes which need to be processed. Depending on the application there are different requirements of how the list should work. Tasks might be required to be ordered in some way or maybe can also be unordered. Also, the list must be accessible by many threads. This is why this trait does not define functions to read and write to the list but only functions to create access channels to the list. Such channels can then be sent to threads and used for communication with the list.
- Bidirectional communication channel to a worklist. Such channels are intended to be sent to worker threads such that those can fetch and push items to work on.
- Unidirectional communication channel to a worklist. This is the API which graph operators can use to push items to the worklist.