1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xml:lang="en-US" lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
3  <head>
4    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5    <meta http-equiv="Content-Style-Type" content="text/css" />
6    <link rel="stylesheet" href="../../../css/manpage.css" type="text/css" />
7    <style type="text/css"><!--
8      span.static_style
9      {
10        font-size			: 8pt;
11        color				: white;
12        font-weight			: bold;
13        background			: #44f;
14        border-left			: solid 1px #aaf;
15        border-top			: solid 1px #aaf;
16        border-right		: solid 1px #00c;
17        border-bottom		: solid 1px #00c;
18        padding-left		: 2px;
19        padding-right		: 2px;
20      }
21
22      span.virtual_style
23      {
24        font-size			 : 8pt;
25        color				 : white;
26        font-weight			: bold;
27        background			: #0a0;
28        border-left			: solid 1px #0f0;
29        border-top			: solid 1px #0f0;
30        border-right		: solid 1px #060;
31        border-bottom		: solid 1px #060;
32        padding-left		: 2px;
33        padding-right		: 2px;
34      }
35
36      span.protected_style
37      {
38        font-size			 : 8pt;
39        color				 : white;
40        font-weight			: bold;
41        background			: #444;
42        border-left			: solid 1px #ccc;
43        border-top			: solid 1px #ccc;
44        border-right		: solid 1px #222;
45        border-bottom		: solid 1px #222;
46        padding-left		: 2px;
47        padding-right		: 2px;
48      }
49        --></style>
50<title>nn::os::Mutex</title>
51  </head>
52  <body>
53<h1><CODE>nn::os::Mutex</CODE> Class</h1>
54    <div class="section">
55<b>Header file: </b>nn/os.h</div>
56<h2>Syntax</h2>
57    <div class="section">
58      <pre class="definition">class Mutex : public <a href="../../../nn/os/WaitObject/Overview.html">nn::os::WaitObject</a></pre>
59    </div>
60<h2>Description</h2>
61    <div class="section">
62<p>Class for handling mutexes. Mutexes are synchronization objects used for providing mutual exclusion.</p><p>Generally, use the <a href="../../../nn/os/Mutex/Overview.html"><CODE>nn::os::Mutex</CODE></a> class instead of <a href="../../../nn/os/CriticalSection/Overview.html"><CODE>nn::os::CriticalSection</CODE></a>. The <a href="../../../nn/os/CriticalSection/Overview.html"><CODE>nn::os::CriticalSection</CODE></a> class performs considerably faster than <a href="../../../nn/os/Mutex/Overview.html"><CODE>nn::os::Mutex</CODE></a> when there are no lock collisions between threads.</p><p>This mechanism prevents certain areas within programs from being run simultaneously within multiple threads. It also prevents data, registers, and other resources from being accessed by multiple threads simultaneously.</p><p>Mutexes can be locked using <a href="../../../nn/os/Mutex/Lock.html"><CODE>Lock</CODE></a>. A mutex that is locked by a certain thread cannot be locked by other threads. If another thread attempts to lock it, that thread will block until the mutex is unlocked.</p><p>The <CODE><a href="../../../nn/os/Mutex/Unlock.html">Unlock</a></CODE> method unlocks mutexes, but it can only be called from the locking thread because mutex locks are associated with their threads.</p><p>The <CODE><a href="../../../nn/os/Mutex/Overview.html">Mutex</a></CODE> class implements recursively locking mutexes. (In other words, <CODE><a href="../../../nn/os/Mutex/Lock.html">Lock</a></CODE> can be called from a locked thread.) In this case, the mutex will not be unlocked until <CODE><a href="../../../nn/os/Mutex/Unlock.html">Unlock</a></CODE> is called the same number of times that <CODE><a href="../../../nn/os/Mutex/Lock.html">Lock</a></CODE> was called.</p><p>The <CODE><a href="../../../nn/os/Mutex/Overview.html">Mutex</a></CODE> class implements priority inheritance. If a high-priority thread (&quot;H&quot;) attempts to get a lock on a mutex that is already locked by a low-priority thread (&quot;L&quot;), the priority of thread L will temporarily be raised to the same priority as thread H.</p><p>The <CODE>Wait</CODE> operation of a <CODE><a href="../../../nn/os/Mutex/Overview.html">Mutex</a></CODE> object gets a lock. Once the lock can be obtained, the <CODE>Wait</CODE> operation is released.</p><p>The use of <CODE><a href="../../../nn/os/Mutex/ScopedLock/Overview.html">nn::os::Mutex::ScopedLock</a></CODE> makes it possible to lock a mutex starting when an object is created, and continuing until it goes out of scope.</p><!-- write here --></div>
63    <a name="class" id="class">
64<h2>Classes</h2>
65      <div class="section">
66        <table class="members">
67          <tr>
68            <th>
69<a href="../../../nn/os/Mutex/ScopedLock/Overview.html"><CODE>nn::os::Mutex::ScopedLock</CODE></a>
70            </th>
71<td>Locks a mutex starting when an object is created, and continues locking it until the the object goes out of scope.</td>
72          </tr>
73        </table>
74      </div>
75    </a> <a name="function" id="function">
76<h2>Member Functions</h2>
77      <div class="section">
78        <table class="members">
79          <tr>
80            <td width="100">  </td>
81            <th>
82<a href="../../../nn/os/Mutex/Mutex.html"><CODE>Mutex</CODE></a>
83            </th>
84<td>Constructs and initializes a mutex.</td>
85          </tr>
86          <tr>
87            <td width="100">  </td>
88            <th>
89<a href="../../../nn/os/Mutex/Initialize.html"><CODE>Initialize</CODE></a>
90            </th>
91<td>Initializes a mutex.</td>
92          </tr>
93          <tr>
94            <td width="100">  </td>
95            <th>
96<a href="../../../nn/os/Mutex/TryInitialize.html"><CODE>TryInitialize</CODE></a>
97            </th>
98<td>Tries to initialize a mutex.</td>
99          </tr>
100          <tr>
101            <td width="100">  </td>
102            <th>
103<a href="../../../nn/os/Mutex/Finalize.html"><CODE>Finalize</CODE></a>
104            </th>
105<td>Destroys a mutex.</td>
106          </tr>
107          <tr>
108            <td width="100">  </td>
109            <th>
110<a href="../../../nn/os/Mutex/~Mutex.html"><CODE>~Mutex</CODE></a>
111            </th>
112<td>Destructor.</td>
113          </tr>
114          <tr>
115            <td width="100">  </td>
116            <th>
117<a href="../../../nn/os/Mutex/Lock.html"><CODE>Lock</CODE></a>
118            </th>
119<td>Locks a mutex.</td>
120          </tr>
121          <tr>
122            <td width="100">  </td>
123            <th>
124<a href="../../../nn/os/Mutex/TryLock.html"><CODE>TryLock</CODE></a>
125            </th>
126<td>Tries to lock a mutex.</td>
127          </tr>
128          <tr>
129            <td width="100">  </td>
130            <th>
131<a href="../../../nn/os/Mutex/Unlock.html"><CODE>Unlock</CODE></a>
132            </th>
133<td>Unlocks a mutex.</td>
134          </tr> </table>
135      </div>
136    </a>
137<h2>Class Hierarchy</h2>
138    <div class="section">
139<p class="hierarchy"><span>ADLFireWall::NonCopyable</span><br />  <a href="../../../nn/os/HandleObject/Overview.html">nn::os::HandleObject</a><br />    <a href="../../../nn/os/WaitObject/Overview.html">nn::os::WaitObject</a><br />      <b>nn::os::Mutex</b>
140      </p>
141    </div>
142<h2>Revision History</h2>
143    <div class="section">
144      <dl class="history">
145        <dt>2010/01/07</dt>
146<dd>Initial version.<br />
147        </dd>
148      </dl>
149    </div>
150  <hr><p>CONFIDENTIAL</p></body>
151</html>