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 } }
| Public Methods | |
|---|---|
| exclusive_ |
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. |
| new | Creates a new Mutex |
| synchronize | Obtains a lock, runs the block, and releases the lock when the block completes. See the example under Mutex. |
| try_ |
Attempts to obtain the lock and returns immediately. Returns true if the lock was granted. |
| unlock | Releases the lock. Returns nil if ref wasn’t locked. |
<code/>and<pre/>for code samples.