Skip to content

Latest commit

 

History

History
47 lines (34 loc) · 2.09 KB

File metadata and controls

47 lines (34 loc) · 2.09 KB

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