Threads[Mutex] - Maple Help

Online Help

All Products    Maple    MapleSim


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

Threads[Mutex]

  

Lock

  

lock a mutex

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

Lock( mutexid )

Parameters

mutexid

-

(integer) the mutex to lock

Description

• 

The Lock command acquires the lock on the mutex with identifier mutexId for the current thread.  If no thread holds the lock on mutexId, then Lock will acquire the lock and return immediately.

• 

If a thread already holds the lock, then Lock will wait until the mutex is unlocked.  Lock will then attempt to acquire the lock for the current thread.

• 

To release the lock on a mutex, use the Unlock command.

• 

When multiple threads are attempting to acquire the lock on a single mutex, there is no guarantee as to which thread will get the lock.  This means that it is possible for a thread to unlock a mutex and then lock it again while other threads are waiting to acquire the lock.

• 

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)

count1

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)

count1

count:=1

(5)

mThreads[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][Destroy]m

See Also

Threads

Threads[Create]

Threads[Mutex]

Threads[Mutex][Create]

Threads[Mutex][Destroy]

Threads[Mutex][Unlock]

 


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