Module lock

Source
Expand description

Instrumented lock types.

This module defines a set of instrumented wrappers for the lock types used in wgpu-core (Mutex, RwLock, and SnatchLock) that help us understand and validate wgpu-core synchronization.

  • The ranked module defines lock types that perform run-time checks to ensure that each thread acquires locks only in a specific order, to prevent deadlocks.

  • The [observing] module defines lock types that record wgpu-core’s lock acquisition activity to disk, for later analysis by the lock-analyzer binary.

  • The vanilla module defines lock types that are uninstrumented, no-overhead wrappers around the standard lock types.

If the wgpu_validate_locks config is set (for example, with RUSTFLAGS='--cfg wgpu_validate_locks'), wgpu-core uses the ranked module’s locks. We hope to make this the default for debug builds soon.

If the observe_locks feature is enabled, wgpu-core uses the [observing] module’s locks.

Otherwise, wgpu-core uses the vanilla module’s locks.

Re-exports§

pub use chosen::Mutex;
pub use chosen::MutexGuard;
pub use chosen::RankData;
pub use chosen::RwLock;
pub use chosen::RwLockReadGuard;
pub use chosen::RwLockWriteGuard;

Modules§

rank
Ranks for wgpu-core locks, restricting acquisition order.
ranked 🔒 std
Lock types that enforce well-ranked lock acquisition order.
vanilla 🔒
Plain, uninstrumented wrappers around [parking_lot] lock types.