diff options
Diffstat (limited to 'src/raw_rwlock.rs')
-rw-r--r-- | src/raw_rwlock.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/raw_rwlock.rs b/src/raw_rwlock.rs index 19b61c8..21d338b 100644 --- a/src/raw_rwlock.rs +++ b/src/raw_rwlock.rs @@ -12,12 +12,11 @@ use core::{ cell::Cell, sync::atomic::{AtomicUsize, Ordering}, }; -use instant::Instant; use lock_api::{RawRwLock as RawRwLock_, RawRwLockUpgrade}; use parking_lot_core::{ self, deadlock, FilterOp, ParkResult, ParkToken, SpinWait, UnparkResult, UnparkToken, }; -use std::time::Duration; +use std::time::{Duration, Instant}; // This reader-writer lock implementation is based on Boost's upgrade_mutex: // https://github.com/boostorg/thread/blob/fc08c1fe2840baeeee143440fba31ef9e9a813c8/include/boost/thread/v2/shared_mutex.hpp#L432 @@ -144,6 +143,12 @@ unsafe impl lock_api::RawRwLock for RawRwLock { let state = self.state.load(Ordering::Relaxed); state & (WRITER_BIT | READERS_MASK) != 0 } + + #[inline] + fn is_locked_exclusive(&self) -> bool { + let state = self.state.load(Ordering::Relaxed); + state & (WRITER_BIT) != 0 + } } unsafe impl lock_api::RawRwLockFair for RawRwLock { |