- Inheritance
- < 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 } }
Methods
Class
Visibility | Signature |
---|---|
public | new () |
Instance
Visibility | Signature |
---|---|
public | exclusive_unlock () {|| ...} |
public | lock () |
public | locked? () |
public | synchronize () {|| ...} |
public | try_lock () |
public | unlock () |
Class Method Detail
new()
Instance Method Detail
exclusive_unlock() {|| ...}
If the mutex is locked, unlocks the mutex, wakes one waiting thread, and yields in a critical section.
lock()
Attempts to grab the lock and waits if it isn‘t available.
locked?()
Returns true if this lock is currently held by some thread.
synchronize() {|| ...}
Obtains a lock, runs the block, and releases the lock when the block completes. See the example under Mutex.
try_lock()
unlock()
Releases the lock. Returns nil if ref wasn‘t locked.