1 use crate::cell::UnsafeCell;
4 locked: UnsafeCell<bool>,
7 unsafe impl Send for Mutex {}
8 unsafe impl Sync for Mutex {} // no threads on wasm
11 pub const fn new() -> Mutex {
12 Mutex { locked: UnsafeCell::new(false) }
16 pub unsafe fn init(&mut self) {
20 pub unsafe fn lock(&self) {
21 let locked = self.locked.get();
22 assert!(!*locked, "cannot recursively acquire mutex");
27 pub unsafe fn unlock(&self) {
28 *self.locked.get() = false;
32 pub unsafe fn try_lock(&self) -> bool {
33 let locked = self.locked.get();
43 pub unsafe fn destroy(&self) {
47 // All empty stubs because wasm has no threads yet, so lock acquisition always
49 pub struct ReentrantMutex {
53 pub unsafe fn uninitialized() -> ReentrantMutex {
57 pub unsafe fn init(&mut self) {}
59 pub unsafe fn lock(&self) {}
62 pub unsafe fn try_lock(&self) -> bool {
66 pub unsafe fn unlock(&self) {}
68 pub unsafe fn destroy(&self) {}