Remove create_lock in favor of lock_and_signal() (issue #2780)

This commit is contained in:
Eric Holk 2012-07-05 10:11:25 -07:00
parent 27cecbf1cf
commit 5bfb5cad3a
2 changed files with 6 additions and 8 deletions

View File

@ -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>>;
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}};
unsafe {
let ptr = unsafe::reinterpret_cast(data);

View File

@ -7,7 +7,7 @@ export min_align_of;
export pref_align_of;
export refcount;
export log_str;
export create_lock, lock_and_signal, condition, methods;
export lock_and_signal, condition, methods;
enum type_desc = {
first_param: **libc::c_int,
@ -87,7 +87,9 @@ pure fn log_str<T>(t: T) -> str {
class lock_and_signal {
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); }
}
@ -101,10 +103,6 @@ class unlock {
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 {
unsafe fn lock<T>(f: fn() -> T) -> T {
rustrt::rust_lock_cond_lock(self.lock);
@ -180,7 +178,7 @@ mod tests {
#[test]
#[ignore] // this can go into infinite loops
fn condition_variable() {
let lock = arc::arc(create_lock());
let lock = arc::arc(lock_and_signal());
let lock2 = arc::clone(&lock);
do task::spawn |move lock2| {