|
1 | 1 | [library Boost.Lockfree |
2 | 2 | [quickbook 1.4] |
3 | 3 | [authors [Blechmann, Tim]] |
4 | | - [copyright 2008-2011 Tim Blechmann] |
| 4 | + [copyright 2008-2026 Tim Blechmann] |
5 | 5 | [category algorithms] |
6 | 6 | [purpose |
7 | 7 | lockfree concurrent data structures |
@@ -115,15 +115,25 @@ lock-freedom: |
115 | 115 |
|
116 | 116 | [h2 Data Structures] |
117 | 117 |
|
118 | | -_lockfree_ implements four lock-free data structures: |
| 118 | +_lockfree_ implements six lock-free data structures: |
119 | 119 |
|
120 | 120 | [variablelist |
121 | 121 | [[[classref boost::lockfree::queue]] |
122 | | - [a lock-free multi-producer/multi-consumer queue] |
| 122 | + [a lock-free multi-producer/multi-consumer queue (Based on Michael & Scott's algorithm)] |
| 123 | + ] |
| 124 | + |
| 125 | + [[[classref boost::lockfree::bounded_ticket_queue]] |
| 126 | + [a bounded multi-producer/multi-consumer queue based on the Dyukov turnstile |
| 127 | + (Vyukov bounded MPMC algorithm). Configurable via `single_producer<>` and |
| 128 | + `single_consumer<>` policy tags to obtain wait-free push or pop.] |
| 129 | + ] |
| 130 | + |
| 131 | + [[[classref boost::lockfree::mpsc_weak_queue]] |
| 132 | + [a multi-producer/single-consumer queue (Based on Dmitry Vyukov's algorithm)] |
123 | 133 | ] |
124 | 134 |
|
125 | 135 | [[[classref boost::lockfree::stack]] |
126 | | - [a lock-free multi-producer/multi-consumer stack] |
| 136 | + [a lock-free multi-producer/multi-consumer stack (Based on Treiber's algorithm)] |
127 | 137 | ] |
128 | 138 |
|
129 | 139 | [[[classref boost::lockfree::spsc_queue]] |
@@ -160,6 +170,16 @@ The data structures can be configured with [@boost:/libs/parameter/doc/html/inde |
160 | 170 | [[[classref boost::lockfree::allow_multiple_reads]] |
161 | 171 | [Configures the [classref boost::lockfree::spsc_value] to allow the content to be read multiple times.] |
162 | 172 | ] |
| 173 | + |
| 174 | + [[[classref boost::lockfree::single_producer]] |
| 175 | + [Configures a data structure for single-producer usage. When set to `true`, push |
| 176 | + does not use a CAS and is wait-free. Only valid for [classref boost::lockfree::bounded_ticket_queue].] |
| 177 | + ] |
| 178 | + |
| 179 | + [[[classref boost::lockfree::single_consumer]] |
| 180 | + [Configures a data structure for single-consumer usage. When set to `true`, pop |
| 181 | + does not use a CAS and is wait-free. Only valid for [classref boost::lockfree::bounded_ticket_queue].] |
| 182 | + ] |
163 | 183 | ] |
164 | 184 |
|
165 | 185 |
|
@@ -278,6 +298,7 @@ _lockfree_ requires a c++14 compliant compiler. Users of MSVC are strongly recom |
278 | 298 | # [@http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.37.3574 Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms by Michael Scott and Maged Michael], |
279 | 299 | In Symposium on Principles of Distributed Computing, pages 267–275, 1996. |
280 | 300 | # [@http://books.google.com/books?id=pFSwuqtJgxYC M. Herlihy & Nir Shavit. The Art of Multiprocessor Programming], Morgan Kaufmann Publishers, 2008 |
| 301 | +# [@http://www.1024cores.net/home/lock-free-algorithms/queues/intrusive-mpsc-node-based-queue Multiple Producer Single Consumer Lock-Free Queue by Dmitry Vyukov], 2010 |
281 | 302 |
|
282 | 303 | [endsect] |
283 | 304 |
|
|
0 commit comments