rust_cond_lock acquire/release should be inside the atomically { .. }
This commit is contained in:
@@ -105,17 +105,17 @@ class unlock {
|
|||||||
|
|
||||||
impl methods for lock_and_signal {
|
impl methods for lock_and_signal {
|
||||||
unsafe fn lock<T>(f: fn() -> T) -> T {
|
unsafe fn lock<T>(f: fn() -> T) -> T {
|
||||||
|
do atomically {
|
||||||
rustrt::rust_lock_cond_lock(self.lock);
|
rustrt::rust_lock_cond_lock(self.lock);
|
||||||
let _r = unlock(self.lock);
|
let _r = unlock(self.lock);
|
||||||
do atomically {
|
|
||||||
f()
|
f()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn lock_cond<T>(f: fn(condition) -> T) -> T {
|
unsafe fn lock_cond<T>(f: fn(condition) -> T) -> T {
|
||||||
|
do atomically {
|
||||||
rustrt::rust_lock_cond_lock(self.lock);
|
rustrt::rust_lock_cond_lock(self.lock);
|
||||||
let _r = unlock(self.lock);
|
let _r = unlock(self.lock);
|
||||||
do atomically {
|
|
||||||
f(condition_(self.lock))
|
f(condition_(self.lock))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user