From 5bfb5cad3a8d5f9c1819472bcd166f8ed8972b6d Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Thu, 5 Jul 2012 10:11:25 -0700 Subject: [PATCH] Remove create_lock in favor of lock_and_signal() (issue #2780) --- src/libcore/arc.rs | 2 +- src/libcore/sys.rs | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/libcore/arc.rs b/src/libcore/arc.rs index 04a8751045b9..ea67f132377f 100644 --- a/src/libcore/arc.rs +++ b/src/libcore/arc.rs @@ -88,7 +88,7 @@ type ex_data = {lock: sys::lock_and_signal, data: T}; type exclusive = arc_destruct>; fn exclusive(-data: T) -> exclusive { - 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); diff --git a/src/libcore/sys.rs b/src/libcore/sys.rs index e99860a6250e..a24c41338c48 100644 --- a/src/libcore/sys.rs +++ b/src/libcore/sys.rs @@ -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) -> 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(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| {