aboutsummaryrefslogtreecommitdiff
path: root/src/raw_rwlock.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/raw_rwlock.rs')
-rw-r--r--src/raw_rwlock.rs9
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 {