X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=readme.md;h=57a211a151edd30d5cb78d464f6530f92d88f6f2;hb=76fe7324fe9a49b9a148a3f88135c53e7b1838c7;hp=9b45b5778a67cba32726bb4ad2b1c23473accf6a;hpb=a154b05cced031094508ceb9a60c2dc1b7ed88f5;p=libcds.git diff --git a/readme.md b/readme.md index 9b45b577..57a211a1 100644 --- a/readme.md +++ b/readme.md @@ -24,7 +24,7 @@ The library contains the implementations of the following containers: - several algo for lock-free queue, including classic Michael & Scott algorithm and its derivatives, the flat combining queue, the segmented queue. - several implementation of unordered set/map - lock-free and fine-grained lock-based - - [flat-combining] (http://mcg.cs.tau.ac.il/projects/projects/flat-combining) technique + - [flat-combining](http://mcg.cs.tau.ac.il/projects/projects/flat-combining) technique - lock-free [skip-list](http://en.wikipedia.org/wiki/Skip_list) - lock-free FeldmanHashMap/Set [Multi-Level Array Hash](http://samos-conference.com/Resources_Samos_Websites/Proceedings_Repository_SAMOS/2013/Files/2013-IC-20.pdf) with thread-safe bidirectional iterator support @@ -46,6 +46,16 @@ Evolution of libcds (Gource visualization by Landon Wilkins): https://www.youtub - *nix: [use CMake](build/cmake/readme.md) - Windows: use MS Visual C++ 2015 project +Some parts of libcds may depend on DCAS (double-width compare-and-swap) atomic primitive if +the target architecture supports it. For x86, cmake build script enables `-mcx16` compiler flag that +switches DCAS support on. You may manually disable DCAS support with the following command line flags +in GCC/clang (for MS VC++ compiler DCAS is not supported): + - `-DCDS_DISABLE_128BIT_ATOMIC` - for 64bit build + - `-DCDS_DISABLE_64BIT_ATOMIC` - for 32bit build + +**All your projects AND libcds MUST be compiled with the same flags - either with DCAS support or without it.** + + **Pull request requirements** - Pull-request to *master* branch will be unconditionally rejected - *integration* branch is intended for pull-request. Usually, *integration* branch is the same as *master* @@ -130,10 +140,6 @@ References Implementations of Read-Copy Update" [pdf](http://www.dorsal.polymtl.ca/sites/www.dorsal.polymtl.ca/files/publications/desnoyers-ieee-urcu-submitted.pdf) -*Memory allocation* - - [2004] M.Michael "Scalable Lock-free Dynamic Memory Allocation" - [pdf](http://www.research.ibm.com/people/m/michael/pldi-2004.pdf) - *Flat Combining* technique - [2010] Hendler, Incze, Shavit and Tzafrir "Flat Combining and the Synchronization-Parallelism Tradeoff" [pdf](http://www.cs.bgu.ac.il/~hendlerd/papers/flat-combining.pdf)