std/sys/sync/mutex/
no_threads.rs1use crate::cell::Cell;
2
3pub struct Mutex {
4 locked: Cell<bool>,
6}
7
8unsafe impl Send for Mutex {}
9unsafe impl Sync for Mutex {} impl Mutex {
12 #[inline]
13 pub const fn new() -> Mutex {
14 Mutex { locked: Cell::new(false) }
15 }
16
17 #[inline]
18 pub fn lock(&self) {
19 assert_eq!(self.locked.replace(true), false, "cannot recursively acquire mutex");
20 }
21
22 #[inline]
23 pub unsafe fn unlock(&self) {
24 self.locked.set(false);
25 }
26
27 #[inline]
28 pub fn try_lock(&self) -> bool {
29 self.locked.replace(true) == false
30 }
31}