Module pargraph::worklists

source ·
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 includes Vec for LIFO queues, VecDeque for FIFO queues, and BinaryHeap 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.