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
			local clone.
		
	
			Page wiki
					View or edit the community-maintained wiki page associated with this page.
		
	
    core.sync.mutex
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 );
- this();
 - Initializes a mutex object.Throws:SyncException on error.
 - this(Object o);
 - Initializes a mutex object and sets it as the monitor for o.
In: o must not already have a monitor.
 - @trusted void lock();
 - If this lock is not already held by the caller, the lock is acquired, then the internal counter is incremented by one.Throws:SyncException on error.
 - @trusted void unlock();
 - Decrements the internal lock count by one. If this brings the count to zero, the lock is released.Throws:SyncException 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:SyncException on error.Returns:true if the lock was acquired and false if not.