Remove create_lock in favor of lock_and_signal() (issue #2780)
This commit is contained in:
parent
27cecbf1cf
commit
5bfb5cad3a
@ -88,7 +88,7 @@ type ex_data<T: send> = {lock: sys::lock_and_signal, data: T};
|
|||||||
type exclusive<T: send> = arc_destruct<ex_data<T>>;
|
type exclusive<T: send> = arc_destruct<ex_data<T>>;
|
||||||
|
|
||||||
fn exclusive<T:send >(-data: T) -> exclusive<T> {
|
fn exclusive<T:send >(-data: T) -> exclusive<T> {
|
||||||
let data = ~{mut count: 1, data: {lock: sys::create_lock(),
|
let data = ~{mut count: 1, data: {lock: sys::lock_and_signal(),
|
||||||
data: data}};
|
data: data}};
|
||||||
unsafe {
|
unsafe {
|
||||||
let ptr = unsafe::reinterpret_cast(data);
|
let ptr = unsafe::reinterpret_cast(data);
|
||||||
|
@ -7,7 +7,7 @@ export min_align_of;
|
|||||||
export pref_align_of;
|
export pref_align_of;
|
||||||
export refcount;
|
export refcount;
|
||||||
export log_str;
|
export log_str;
|
||||||
export create_lock, lock_and_signal, condition, methods;
|
export lock_and_signal, condition, methods;
|
||||||
|
|
||||||
enum type_desc = {
|
enum type_desc = {
|
||||||
first_param: **libc::c_int,
|
first_param: **libc::c_int,
|
||||||
@ -87,7 +87,9 @@ pure fn log_str<T>(t: T) -> str {
|
|||||||
|
|
||||||
class lock_and_signal {
|
class lock_and_signal {
|
||||||
let lock: rust_cond_lock;
|
let lock: rust_cond_lock;
|
||||||
new(lock: rust_cond_lock) { self.lock = lock; }
|
new() {
|
||||||
|
self.lock = rustrt::rust_create_cond_lock();
|
||||||
|
}
|
||||||
drop { rustrt::rust_destroy_cond_lock(self.lock); }
|
drop { rustrt::rust_destroy_cond_lock(self.lock); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,10 +103,6 @@ class unlock {
|
|||||||
drop { rustrt::rust_unlock_cond_lock(self.lock); }
|
drop { rustrt::rust_unlock_cond_lock(self.lock); }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_lock() -> lock_and_signal {
|
|
||||||
lock_and_signal(rustrt::rust_create_cond_lock())
|
|
||||||
}
|
|
||||||
|
|
||||||
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 {
|
||||||
rustrt::rust_lock_cond_lock(self.lock);
|
rustrt::rust_lock_cond_lock(self.lock);
|
||||||
@ -180,7 +178,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
#[ignore] // this can go into infinite loops
|
#[ignore] // this can go into infinite loops
|
||||||
fn condition_variable() {
|
fn condition_variable() {
|
||||||
let lock = arc::arc(create_lock());
|
let lock = arc::arc(lock_and_signal());
|
||||||
let lock2 = arc::clone(&lock);
|
let lock2 = arc::clone(&lock);
|
||||||
|
|
||||||
do task::spawn |move lock2| {
|
do task::spawn |move lock2| {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user