summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBotahamec <botahamec@outlook.com>2022-10-27 18:47:59 -0400
committerBotahamec <botahamec@outlook.com>2022-10-27 18:47:59 -0400
commit0435c4a84f320baa7e8296b2124ba4a7923d1a13 (patch)
tree3819af93b66afdc1292f0a7bdf93cddff060f8e2 /src
parent10b6575f982ea229663097bfa950a778f6809099 (diff)
Unsafe `force_unlock` methods
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs11
-rw-r--r--src/lock.rs2
2 files changed, 12 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 22a8d9c..777ccf3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -50,4 +50,15 @@ impl ThreadKey {
pub fn unlock(key: Self) {
drop(key);
}
+
+ /// Unlocks the `ThreadKey` without consuming it.
+ ///
+ /// # Safety
+ ///
+ /// This should only be called if the `ThreadKey` to the lock has been
+ /// "lost". That means the program no longer has a reference to the key,
+ /// but it has not been dropped.
+ pub unsafe fn force_unlock() {
+ KEY.get_or_default().force_unlock();
+ }
}
diff --git a/src/lock.rs b/src/lock.rs
index 54a836d..08e21c4 100644
--- a/src/lock.rs
+++ b/src/lock.rs
@@ -57,7 +57,7 @@ impl Lock {
/// This should only be called if the key to the lock has been "lost". That
/// means the program no longer has a reference to the key, but it has not
/// been dropped.
- unsafe fn force_unlock(&self) {
+ pub unsafe fn force_unlock(&self) {
self.is_locked.store(false, Ordering::Release);
}