Object
Mutex implements a simple semaphore that can be used to coordinate access to shared data from multiple concurrent threads.
Example:
require 'thread' semaphore = Mutex.new a = Thread.new { semaphore.synchronize { # access shared resource } } b = Thread.new { semaphore.synchronize { # access shared resource } }
If the mutex is locked, unlocks the mutex, wakes one waiting thread, and yields in a critical section.
Returns true if this lock is currently held by some thread.
static VALUE rb_mutex_locked_p(VALUE self) { Mutex *mutex; Data_Get_Struct(self, Mutex, mutex); return MUTEX_LOCKED_P(mutex) ? Qtrue : Qfalse; }
for marshalling mutexes and condvars
static VALUE dummy_load(VALUE self, VALUE string) { return Qnil; }
Obtains a lock, runs the block, and releases the lock when the block completes. See the example under Mutex.
static VALUE rb_mutex_synchronize(VALUE self) { rb_mutex_lock(self); return rb_ensure(rb_yield, Qundef, rb_mutex_unlock, self); }
Attempts to obtain the lock and returns immediately. Returns true if the lock was granted.
static VALUE rb_mutex_try_lock(VALUE self) { Mutex *mutex; Data_Get_Struct(self, Mutex, mutex); if (MUTEX_LOCKED_P(mutex)) return Qfalse; mutex->owner = rb_thread_current(); return Qtrue; }
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.