Create - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.
Our website is currently undergoing maintenance, which may result in occasional errors while browsing. We apologize for any inconvenience this may cause and are working swiftly to restore full functionality. Thank you for your patience.

Online Help

All Products    Maple    MapleSim


Threads[Mutex]

  

Create

  

create a new mutex

 

Calling Sequence

Description

Examples

Calling Sequence

Create()

Description

• 

The Create command is used to create a new Mutex.  This command returns an integer identifier that is used to represent the mutex.

• 

The Create command does not accept any arguments.

• 

Once created, the mutex can be locked and unlocked using the Lock and Unlock commands.

• 

When a mutex is no longer needed, it should be destroyed using the Destroy command.  This will release all the resources used by the mutex.

• 

For more information on using mutexes, see the Mutex help page.

Examples

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

pprocmglobalcount;printcount;countcount+1end proc

(1)

count1

count1

(2)

Create ten threads running the p function.

ThreadsWaitseqThreadsCreatepm,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;

pprocmglobalcount;Threads[Mutex][Lock]m;printcount;countcount+1;Threads[Mutex][Unlock]mend proc

(4)

count1

count1

(5)

mThreadsMutexCreate

m1

(6)

Create ten threads running the new p function.

ThreadsWaitseqThreadsCreatepm,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.

ThreadsMutexDestroym

See Also

Threads

Threads[Create]

Threads[Mutex]

Threads[Mutex][Destroy]

Threads[Mutex][Lock]

Threads[Mutex][Unlock]