Single-header C90 collection of synchronization primitives
2015-09-30 14:49:49 -07:00
.gitignore .gitignore *.dSYM 2015-09-22 12:07:33 -07:00
cds_sync.h Fixed build errors on Linux 2015-09-30 14:44:36 -07:00
README.md Added README. Let's see if it renders correctly... 2015-09-30 14:49:49 -07:00

cds_sync

This single header file C90 library provides a portable collection of synchronization primitives for use in multithreaded programming. The following primitives are provided:

  • cds_sync_futex_t -- A futex (fast userspace mutex), guaranteed to stay in userspace code unless a thread must be put to sleep or awakened.
  • cds_sync_fusem_t -- A fast userspace semaphore, guaranteed to stay in userspace code unless a thread must be put to sleep or awakened.
  • cds_sync_monitor_t -- A monitor, which bundles a condition variable and its associated mutex.
  • cds_sync_eventcount_t -- An event count which lets callers safely avoid waiting unless there's actually no work to do.
  • cds_sync_monsem_t -- A monitored semaphore, which builds on the basic semaphore by allowing a master thread to wait for the semaphore to have a certain positive non-zero value.
  • cds_sync_barrier_t -- Lets users specify a barrier that all threads must reach before any thread can proceed.

Key Features / Design Goals

  • Identical API on all supported platforms. The following platforms are tested regularly:
    • Microsoft Windows 7
      • Visual Studio 2010
      • Visual Studio 2012
      • Visual Studio 2013
    • Linux Mint
      • LLVM/Clang 3.5
      • gcc 4.8.4
    • Apple OSX
      • Apple LLVM/Clang 6.1.0
  • No (mandatory) external dependencies. Only standard C library functions are used, and even those can be overriden with custom implementations through #defines if desired.
  • Dirt-simple integration. Just a single header file to include in your project.
  • Public domain license terms.

Acknowledgements