Modified Hazard Pointer SMR to conform C++11 memory model more strictly
[libcds.git] / readme.md
index dfbff6d5f33364815efc3281ce434c8e777729e9..612a30870b348a6282b376b8f2502ec47cf4dce4 100644 (file)
--- a/readme.md
+++ b/readme.md
@@ -1,5 +1,14 @@
 CDS C++ library\r
 ===============\r
+[![GitHub version](https://badge.fury.io/gh/khizmax%2Flibcds.svg)](http://badge.fury.io/gh/khizmax%2Flibcds)\r
+<!---\r
+The build time for lib and hdr-test is exceed the limit of 50 minutes\r
+[![Build Status](https://travis-ci.org/khizmax/libcds.svg?branch=dev)](https://travis-ci.org/khizmax/libcds)\r
+-->\r
+<!---\r
+The coverity dataset is about 4G of size and about 1G in compressed state so it is a problem to upload it to the coverity server\r
+[![Coverity Scan Build Status](https://scan.coverity.com/projects/4445/badge.svg)](https://scan.coverity.com/projects/4445)\r
+-->\r
 \r
 The Concurrent Data Structures (CDS) library is a collection of concurrent containers\r
 that don't require external (manual) synchronization for shared access, and safe memory reclamation (SMR) \r
@@ -25,25 +34,41 @@ Download the latest release from http://sourceforge.net/projects/libcds/files/
 \r
 See online doxygen-generated doc here: http://libcds.sourceforge.net/doc/cds-api/index.html\r
 \r
+**Pull request requirements**\r
+- Pull-request to *master* branch will be unconditionally rejected\r
+- *integration* branch is intended for pull-request. Usually, *integration* branch is the same as *master*\r
+- *dev* branch is intended for main developing. Usually, it contains unstable code\r
+\r
+\r
 References\r
 ----------\r
 *Stack*\r
   - *TreiberStack*: [1986] R. K. Treiber. Systems programming: Coping with parallelism. Technical Report RJ 5118, IBM Almaden Research Center, April 1986.\r
   - Elimination back-off implementation is based on idea from [2004] Danny Hendler, Nir Shavit, Lena Yerushalmi "A Scalable Lock-free Stack Algorithm"\r
+        [pdf](http://people.csail.mit.edu/shanir/publications/Lock_Free.pdf)\r
   - *FCStack* - flat-combining wrapper for *std::stack*\r
         \r
 *Queue*\r
   - *BasketQueue*: [2007] Moshe Hoffman, Ori Shalev, Nir Shavit "The Baskets Queue"\r
+        [pdf](http://people.csail.mit.edu/shanir/publications/Baskets%20Queue.pdf)\r
   - *MSQueue*:\r
     * [1998] Maged Michael, Michael Scott "Simple, fast, and practical non-blocking and blocking concurrent queue algorithms"\r
+        [pdf](http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf)\r
     * [2002] Maged M.Michael "Safe memory reclamation for dynamic lock-free objects using atomic reads and writes"\r
+        [pdf](http://www.research.ibm.com/people/m/michael/podc-2002.pdf)\r
     * [2003] Maged M.Michael "Hazard Pointers: Safe memory reclamation for lock-free objects"\r
+        [pdf](http://www.research.ibm.com/people/m/michael/ieeetpds-2004.pdf)\r
   - *RWQueue*: [1998] Maged Michael, Michael Scott "Simple, fast, and practical non-blocking and blocking concurrent queue algorithms"\r
+        [pdf](http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf)\r
   - *MoirQueue*: [2000] Simon Doherty, Lindsay Groves, Victor Luchangco, Mark Moir "Formal Verification of a practical lock-free queue algorithm"\r
+        [pdf](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.9954&rep=rep1&type=pdf)\r
   - *OptimisticQueue*: [2008] Edya Ladan-Mozes, Nir Shavit "An Optimistic Approach to Lock-Free FIFO Queues"\r
+        [pdf](https://people.csail.mit.edu/edya/publications/OptimisticFIFOQueue-journal.pdf)\r
   - *SegmentedQueue*: [2010] Afek, Korland, Yanovsky "Quasi-Linearizability: relaxed consistency for improved concurrency"\r
+        [pdf](http://mcg.cs.tau.ac.il/papers/opodis2010-quasi.pdf)\r
   - *FCQueue* - flat-combining wrapper for *std::queue*\r
   - *TsigasCycleQueue*: [2000] Philippas Tsigas, Yi Zhang "A Simple, Fast and Scalable Non-Blocking Concurrent FIFO Queue for Shared Memory Multiprocessor Systems"\r
+        [pdf](http://www.cse.chalmers.se/~tsigas/papers/latest-spaa01.pdf)\r
   - *VyukovMPMCCycleQueue* Dmitry Vyukov (see http://www.1024cores.net)\r
 \r
 *Deque*\r
@@ -51,34 +76,47 @@ References
 \r
 *Map, set*\r
   - *MichaelHashMap*: [2002] Maged Michael "High performance dynamic lock-free hash tables and list-based sets"\r
+        [pdf](http://www.research.ibm.com/people/m/michael/spaa-2002.pdf)\r
   - *SplitOrderedList*: [2003] Ori Shalev, Nir Shavit "Split-Ordered Lists - Lock-free Resizable Hash Tables"\r
+        [pdf](http://people.csail.mit.edu/shanir/publications/Split-Ordered_Lists.pdf)\r
   - *StripedMap*, *StripedSet*: [2008] Maurice Herlihy, Nir Shavit "The Art of Multiprocessor Programming"\r
   - *CuckooMap*, *CuckooSet*: [2008] Maurice Herlihy, Nir Shavit "The Art of Multiprocessor Programming"\r
   - *SkipListMap*, *SkipListSet*: [2008] Maurice Herlihy, Nir Shavit "The Art of Multiprocessor Programming"\r
         \r
 *Ordered single-linked list*\r
   - *LazyList*: [2005] Steve Heller, Maurice Herlihy, Victor Luchangco, Mark Moir, William N. Scherer III, and Nir Shavit "A Lazy Concurrent List-Based Set Algorithm"\r
+        [pdf](http://people.csail.mit.edu/shanir/publications/Lazy_Concurrent.pdf)\r
   - *MichaelList*: [2002] Maged Michael "High performance dynamic lock-free hash tables and list-based sets"\r
+        [pdf](http://www.research.ibm.com/people/m/michael/spaa-2002.pdf)\r
 \r
 *Priority queue*\r
   - *MSPriorityQueue*: [1996] G.Hunt, M.Michael, S. Parthasarathy, M.Scott "An efficient algorithm for concurrent priority queue heaps"\r
+        [pdf](http://web.cse.ohio-state.edu/dmrl/papers/heap96.pdf)\r
 \r
 *Tree*\r
   - *EllenBinTree*: [2010] F.Ellen, P.Fatourou, E.Ruppert, F.van Breugel "Non-blocking Binary Search Tree"\r
+        [pdf](http://www.cs.vu.nl/~tcs/cm/faith.pdf)\r
 \r
 *SMR*\r
   - Hazard Pointers\r
-    * [2002] Maged M.Michael "Safe memory reclamation for dynamic lock-freeobjects using atomic reads and writes"\r
-    * [2003] Maged M.Michael "Hazard Pointers: Safe memory reclamation for lock-free objects"\r
-    * [2004] Andrei Alexandrescy, Maged Michael "Lock-free Data Structures with Hazard Pointers"\r
+    * [2002] Maged M.Michael "Safe memory reclamation for dynamic lock-free objects using atomic reads and writes" \r
+             [pdf](http://www.research.ibm.com/people/m/michael/podc-2002.pdf)\r
+    * [2003] Maged M.Michael "Hazard Pointers: Safe memory reclamation for lock-free objects" \r
+             [pdf](http://www.research.ibm.com/people/m/michael/ieeetpds-2004.pdf)\r
+    * [2004] Andrei Alexandrescy, Maged Michael "Lock-free Data Structures with Hazard Pointers" \r
+             [pdf](http://www.researchgate.net/profile/Andrei_Alexandrescu/publication/252573326_Lock-Free_Data_Structures_with_Hazard_Pointers/links/0deec529e7804288fe000000.pdf)\r
   - User-space RCU\r
     * [2009] M.Desnoyers "Low-Impact Operating System Tracing" PhD Thesis,\r
              Chapter 6 "User-Level Implementations of Read-Copy Update"\r
+             [pdf](http://www.lttng.org/files/thesis/desnoyers-dissertation-2009-12-v27.pdf)\r
     * [2011] M.Desnoyers, P.McKenney, A.Stern, M.Dagenias, J.Walpole "User-Level\r
              Implementations of Read-Copy Update"\r
+             [pdf](http://www.dorsal.polymtl.ca/sites/www.dorsal.polymtl.ca/files/publications/desnoyers-ieee-urcu-submitted.pdf)\r
 \r
 *Memory allocation*\r
   - [2004] M.Michael "Scalable Lock-free Dynamic Memory Allocation"\r
+            [pdf](http://www.research.ibm.com/people/m/michael/pldi-2004.pdf)\r
 \r
 *Flat Combining* technique\r
   - [2010] Hendler, Incze, Shavit and Tzafrir "Flat Combining and the Synchronization-Parallelism Tradeoff"\r
+            [pdf](http://www.cs.bgu.ac.il/~hendlerd/papers/flat-combining.pdf)\r