@@ -7,9 +7,9 @@ not do any work-stealing, so their queues can be simpler: there is only ever
7
7
one dequeuer.
8
8
9
9
In single-threaded shepherd mode, the following schedulers are available:
10
- nemesis, lifo, mutexfifo, mtsfifo
10
+ nemesis
11
11
In multi-threaded shepherd mode, the following schedulers are available:
12
- sherwood
12
+ sherwood, distrib
13
13
14
14
Brief descriptions of each option follow:
15
15
@@ -21,19 +21,6 @@ Nemesis: This is a lock-free FIFO queue based on the NEMESIS lock-free queue
21
21
design from the MPICH folks. It is extremely efficient, as long as FIFO is
22
22
the scheduling order that you want.
23
23
24
- Lifo: This is a lock-free LIFO stack. It's nearly identical to the LIFO stack
25
- used in the qt_mpool code. It's quite efficient, as long as LIFO is the
26
- scheduling order that you want.
27
-
28
- MutexFifo: This is a mutex-based FIFO queue. This only exists for compatibility
29
- with systems that do not have sufficient atomic-operation support for
30
- lock-free queue designs.
31
-
32
- MTSFifo: This is a lock-free FIFO queue based on the queue by Maged Michael of
33
- IBM. Unlike the NEMESIS queue, it is safe for multiple dequeuer's. The
34
- implementation is essentially identical to the implementation of
35
- qt_lfqueue. This was the default queue implementation before qthreads 1.6.
36
-
37
24
Sherwood: This is a scheduler policy designed by the MAESTRO project centered
38
25
around double-ended queue. This design uses mutexes to protect those
39
26
queues. The basic idea is that there is one queue per shepherd, shared
@@ -42,10 +29,3 @@ Sherwood: This is a scheduler policy designed by the MAESTRO project centered
42
29
work-stealing between shepherds, a FIFO scheduling order is used. See
43
30
http://doi.acm.org/10.1145/1988796.1988804 for details.
44
31
45
- Nottingham: This is also a scheduler policy designed by the MAESTRO project,
46
- but it is officially EXPERIMENTAL. It is a modification of the Sherwood
47
- scheduler, designed to use a mostly-lock-free algorithm involving a
48
- high-performance reader/writer lock. Worker threads within a single
49
- shepherd act as "readers" and manipulate the deque in a lock-free fashion.
50
- Stealing acts as a "writer": only one thread can steal at a time, and
51
- worker threads cannot manipulate the queue while that is happening.
0 commit comments