- *nix: [use CMake](build/cmake/readme.md)\r
- Windows: use MS Visual C++ 2015 project\r
\r
+Some parts of libcds may depend on DCAS (double-width compare-and-swap) atomic primitive if\r
+the target architecture supports it. For x86, cmake build script enables `-mcx16` compiler flag that\r
+switches DCAS support on. You may manually disable DCAS support with the following command line flags\r
+in GCC/clang (for MS VC++ compiler DCAS is not supported):\r
+ - `-DCDS_DISABLE_128BIT_ATOMIC` - for 64bit build\r
+ - `-DCDS_DISABLE_64BIT_ATOMIC` - for 32bit build\r
+\r
+**All your projects AND libcds MUST be compiled with the same flags - either with DCAS support or without it.**\r
+ \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
- *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
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