unload a mutex - Maple Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Programming : Multithreaded Programming : Mutex : Threads/Mutex/Unlock

Threads[Mutex][Unlock] - unload a mutex

Calling Sequence

Unlock( mutexId )

Description

• 

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.

Examples

p := proc( m )
   global count;
   print( count );
   count := count+1;
end proc;

p:=procmglobalcount;printcount;count:=count+1end proc

(1)

count:=1

count:=1

(2)

Create ten threads running the p function.

Threads[Wait]seqThreads[Create]pm,i=1..10

1

2

3

4

5

6

6

8

8

10

(3)

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;printcount;count:=count+1;Threads[Mutex][Unlock]mend proc

(4)

count:=1

count:=1

(5)

m:=Threads[Mutex]Create

m:=1

(6)

Create ten threads running the new p function.

Threads[Wait]seqThreads[Create]pm,i=1..10:

1

2

3

4

5

6

7

8

9

10

(7)

Using a mutex allows you to control access to the shared variable.  Thus each number will be printed only once.

Threads[Mutex]Destroym

See Also

Threads, Threads[Create], Threads[Mutex], Threads[Mutex][Create], Threads[Mutex][Destroy], Threads[Mutex][Lock]


Download Help Document

Was this information helpful?



Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam