Threads[Mutex]
Unlock
unload a mutex
Calling Sequence
Description
Examples
Unlock( mutexId )
The Unlock command releases the lock on the mutex with identifier mutexId. The thread evaluating the call to Unlock should have previously acquired the lock by calling the Lock command.
For more information on using mutexes, see the Mutex help page.
p := proc( m ) global count; print( count ); count := count+1; end proc;
p≔procmglobalcount;print⁡count;count ≔ count+1end proc
count≔1
Create ten threads running the p function.
ThreadsWait⁡seq⁡ThreadsCreate⁡p⁡m,i=1..10
1
2
3
4
5
6
8
10
Without mutexes the same value may be printed multiple times. (You may have to execute this command multiple times to see this occur.)
p := proc( m ) global count; Threads[Mutex][Lock]( m ); print( count ); count := count+1; Threads[Mutex][Unlock]( m ); end proc;
p≔procmglobalcount;Threads[Mutex][Lock]⁡m;print⁡count;count ≔ count+1;Threads[Mutex][Unlock]⁡mend proc
m≔ThreadsMutexCreate⁡
m≔1
Create ten threads running the new p function.
ThreadsWait⁡seq⁡ThreadsCreate⁡p⁡m,i=1..10:
7
9
Using a mutex allows you to control access to the shared variable. Thus each number will be printed only once.
ThreadsMutexDestroy⁡m
See Also
Threads
Threads[Create]
Threads[Mutex][Create]
Threads[Mutex][Destroy]
Threads[Mutex][Lock]
Download Help Document