nsync is a portable C library that provides a collection of advanced synchronization primitives designed to facilitate safe and efficient multithreaded programming. It offers reader-writer locks, condition variables, run-once initialization, waitable counters, and waitable bits for coordination and cancellation between threads. Unlike traditional pthreads-based synchronization, nsync introduces conditional critical sections, allowing developers to wait for arbitrary conditions without explicit signaling or complex loop-based logic. This approach simplifies concurrency management and often improves readability and maintainability of multithreaded code. The library emphasizes efficiency, with locks and condition variables occupying minimal memory and supporting cancellation mechanisms through nsync_note objects rather than thread-level cancellation. Designed with portability and performance in mind, nsync can be compiled on Unix-like systems and Windows using a C90 compiler.
Features
- Provides efficient synchronization primitives including locks, condition variables, and waitable counters
- Implements conditional critical sections for simpler and safer waiting logic
- Supports reader-writer locks as fast as traditional mutexes
- Includes cancellation support via nsync_note objects rather than thread termination
- Portable across Unix-like systems and Windows with multiple atomic operation backends
- Compatible with C90, C11, and C++11 compilers and atomic operation models