Skip to content

compio-rs/synchrony

Repository files navigation

Synchrony

MIT licensed crates.io docs.rs Check Telegram Discord

A library that provides both sync and unsync versions of common synchronization primitives.

Features

All of the following primitives are provided in both sync and unsync versions:

  • Shared (Rc/Arc)
  • Atomic Scalars
  • Watch
  • Waker Slot (AtomicWaker and its unsync counterpart)
  • Mutex
  • Async Mutex
  • BiLock
  • Flag (specialized AtomicBool)
  • Event (event-listener and local-event)
  • Async Flag

Loom Testing Support

This library includes built-in support for loom, a testing tool for concurrent Rust code that helps verify the correctness of concurrent algorithms.

When compiled with --cfg loom, the library automatically switches to use loom's implementations of synchronization primitives instead of the standard library versions. This enables you to:

  • Detect data races and concurrency bugs
  • Verify lock-free algorithms
  • Test different thread interleavings exhaustively

For more information about loom and how to write loom tests, see the loom documentation.

Supported Types

The following types automatically use loom implementations when the loom cfg is enabled:

  • std::sync::atomic::* types (AtomicBool, AtomicUsize, etc.)
  • std::sync::Arcloom::sync::Arc
  • std::sync::Mutexloom::sync::Mutex
  • std::cell::UnsafeCellloom::cell::UnsafeCell
  • std::cell::Cellloom::cell::Cell

About

A library that provides both sync and unsync versions of common synchronization primitives.

Resources

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors