Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
core.sync.mutex
The
mutex module provides a primitive for maintaining mutually exclusive
access.
License:
Authors:
Sean Kelly
Source: core/sync/mutex.d
- class
Mutex: object.Object.Monitor; - This class represents a general purpose, recursive mutex.Examples:
auto mutex = new Mutex; int numThreads = 10; int numTries = 1000; int lockCount = 0; void testFn() { for( int i = 0; i < numTries; ++i ) { synchronized( mutex ) { ++lockCount; } } } auto group = new ThreadGroup; for( int i = 0; i < numThreads; ++i ) group.create( &testFn ); group.joinAll(); assert( lockCount == numThreads * numTries );
- nothrow @trusted this();
- Initializes a mutex object.Throws:SyncError on error.
- nothrow @trusted this(Object
o); - Initializes a mutex object and sets it as the monitor for
o.In:
omust not already have a monitor. - @trusted void
lock(); - If this
lockis not already held by the caller, thelockis acquired, then the internal counter is incremented by one.Throws:SyncError on error. - @trusted void
unlock(); - Decrements the internal lock count by one. If this brings the count to zero, the lock is released.Throws:SyncError on error.
- bool
tryLock(); - If the lock is held by another caller, the method returns. Otherwise, the lock is acquired if it is not already held, and then the internal counter is incremented by one.Throws:SyncError on error.Returns:
trueif the lock was acquired andfalseif not.
Copyright Sean Kelly 2005 - 2009.
| Page generated by
Ddoc on (no date time)