diff -r 43e37759235e -r 51a74ef9ed63 Symbian3/SDK/Source/GUID-FA120B3F-4EC4-5A0A-8A36-D5CD032CF1B0.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/SDK/Source/GUID-FA120B3F-4EC4-5A0A-8A36-D5CD032CF1B0.dita Wed Mar 31 11:11:55 2010 +0100 @@ -0,0 +1,41 @@ + + + + + +Using +MutexesThis document describes how to use mutexes. +

Mutexes provide serialised access to shared resources. They are Kernel +objects and, as such, are managed by the Kernel.

+

A mutex can be used by threads across any number of processes. If a resource +is only shared between the threads within the same process, it can be more +efficient to use a critical section.

+

Access to a mutex is through an RMutex handle.

+

Mutexes are similar to semaphores in that they have a TInt count +value that is incremented by calling the Signal() member +function of the mutex handle and decremented by calling the Wait() member +function of the mutex handle. A mutex with a negative value implies that a +thread must wait for access to the shared resource.

+

Unlike a semaphore, the count value of a mutex is always set to one when +it is constructed.

+

The creator of a shared resource uses the CreateLocal() or CreateGlobal() member +functions of RMutex to create a mutex and to open the handle +to it. Any thread wishing to access the resource first calls Wait(); +that thread then calls Signal() after completing its access.

+

The first thread to call Wait() returns immediately, and +is free to continue execution, but any other threads that call Wait() will +wait in a queue maintained by the mutex. Waiting threads are released on a +first-in first-out basis when the thread currently accessing the resource +calls Signal().

+

The nature of the shared resources should be such that any access completes +in a relatively short time so that threads do not wait for extensive periods +on the mutex.

+

In many cases, it may be better to use servers to serialize access to a +shared resource (for example, the window server) rather than use a mutex.

+
\ No newline at end of file