C Lockless Data Structures
Перейти к файлу
Dan Cristoloveanu 97ed9d226b
Update dependencies (#306)
2024-11-15 19:16:05 -08:00
.github/policies
build
deps Update dependencies (#306) 2024-11-15 19:16:05 -08:00
devdoc More snapshot perf (#298) 2024-11-06 15:28:57 +05:30
inc/clds More snapshot perf (#298) 2024-11-06 15:28:57 +05:30
src Update dependencies (#305) 2024-11-15 16:40:33 -08:00
tests Update dependencies (#305) 2024-11-15 16:40:33 -08:00
.gitignore
.gitmodules
CMakeLists.txt no more INC_FOLDER (#284) 2024-10-11 14:51:38 -07:00
CODE_OF_CONDUCT.md
LICENSE
SECURITY.md
readme.md
vcpkg.json

readme.md

C Lockless Data Structures

clds is a general purpose C library implementing several lockless data structures.

Implemented lockless data structures:

  • Singly linked list
  • Hash table

This library is work in progress. The first release should happen once the first lockless structure is usable and working.

The goals are:

  • Performant lockless data structures
  • C11 compliant code.

Dependencies

clds uses c-util, which is a C library providing common functionality for basic tasks (string manipulation, list manipulation, etc.). c-util is available here: https://github.com/Azure/c-util and it is used as a submodule.

clds uses ctest as a test runner. clds uses umock-c as mocking framework.

clds uses cmake for configuring build files.

Setup

Build

  • Clone clds by:
git clone --recursive https://github.com/Azure/clds.git
  • Create a folder named cmake under clds

  • Switch to the cmake folder and run

cmake ..
  • Build
cmake --build .

Building the tests

In order to build the unit tests use:

cmake .. -Drun_unittests:bool=ON

Switching branches

After any switch of branches (git checkout for example), one should also update the submodule references by:

git submodule update --init --recursive