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::CriticalSection</title>
51  </head>
52  <body>
53<h1><CODE>nn::os::CriticalSection</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 CriticalSection : private ADLFireWall::NonCopyable<CriticalSection></pre>
59    </div>
60<h2>Description</h2>
61    <div class="section">
62<p>Class for handling critical sections. Critical sections are synchronization objects used for providing mutual exclusion.</p><p>This mechanism prevents certain areas within programs from being run simultaneously within multiple threads. It also prevents resources from being accessed by multiple threads simultaneously.</p><p>Critical sections play the same role as mutexes (<a href="../../../nn/os/Mutex/Overview.html"><CODE>nn::os::Mutex</CODE></a>), but they have the following limitations.</p><p><itemizedlist><listitem><para>They can be used only to provide mutual exclusion within a single application. </para></listitem><listitem><para>No priority inheritance takes place. Problems such as priority inversion may occur.</para></listitem><listitem><para>Critical sections use more memory to store objects than mutexes do. 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. In most cases, use <a href="../../../nn/os/CriticalSection/Overview.html"><CODE>nn::os::CriticalSection</CODE></a> instead of <a href="../../../nn/os/Mutex/Overview.html"><CODE>nn::os::Mutex</CODE></a>.</p><p>The use of <a href="../../../nn/os/CriticalSection/ScopedLock/Overview.html"><CODE>nn::os::CriticalSection::ScopedLock</CODE></a> makes it possible to enter a critical section when an object is created and stay in the critical section until the scope is exited.</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/CriticalSection/ScopedLock/Overview.html"><CODE>nn::os::CriticalSection::ScopedLock</CODE></a>
70            </th>
71<td>Enters a critical section when an object is created and stays in until the scope is exited.</td>
72          </tr> </table>
73      </div>
74    </a> <a name="function" id="function">
75<h2>Member Functions</h2>
76      <div class="section">
77        <table class="members">
78          <tr>
79            <td width="100">  </td>
80            <th>
81<a href="../../../nn/os/CriticalSection/CriticalSection.html"><CODE>CriticalSection</CODE></a>
82            </th>
83<td>Constructs an object.</td>
84          </tr>
85          <tr>
86            <td width="100">  </td>
87            <th>
88<a href="../../../nn/os/CriticalSection/Initialize.html"><CODE>Initialize</CODE></a>
89            </th>
90<td>Initializes an object.</td>
91          </tr>
92          <tr>
93            <td width="100">  </td>
94            <th>
95<a href="../../../nn/os/CriticalSection/TryInitialize.html"><CODE>TryInitialize</CODE></a>
96            </th>
97<td>Tries to initialize an object.</td>
98          </tr>
99          <tr>
100            <td width="100">  </td>
101            <th>
102<a href="../../../nn/os/CriticalSection/Finalize.html"><CODE>Finalize</CODE></a>
103            </th>
104<td>Destroys a critical section.</td>
105          </tr>
106          <tr>
107            <td width="100">  </td>
108            <th>
109<a href="../../../nn/os/CriticalSection/~CriticalSection.html"><CODE>~CriticalSection</CODE></a>
110            </th>
111<td>Destructor.</td>
112          </tr>
113          <tr>
114            <td width="100">  </td>
115            <th>
116<a href="../../../nn/os/CriticalSection/Enter.html"><CODE>Enter</CODE></a>
117            </th>
118<td>Locks out other threads and prevents them from entering a critical section. This function blocks.</td>
119          </tr>
120          <tr>
121            <td width="100">  </td>
122            <th>
123<a href="../../../nn/os/CriticalSection/TryEnter.html"><CODE>TryEnter</CODE></a>
124            </th>
125<td>Locks out other threads and prevents them from entering a critical section. This function does not block.</td>
126          </tr>
127          <tr>
128            <td width="100">  </td>
129            <th>
130<a href="../../../nn/os/CriticalSection/Leave.html"><CODE>Leave</CODE></a>
131            </th>
132<td>Unlocks and allows other threads to enter a critical section.</td>
133          </tr> </table>
134      </div>
135    </a>
136<h2>Class Hierarchy</h2>
137    <div class="section">
138<p class="hierarchy"><span>ADLFireWall::NonCopyable</span><br />  <b>nn::os::CriticalSection</b>
139      </p>
140    </div>
141<h2>Revision History</h2>
142    <div class="section">
143      <dl class="history">
144        <dt>2010/01/07</dt>
145<dd>Initial version.<br />
146        </dd>
147      </dl>
148    </div>
149  <hr><p>CONFIDENTIAL</p></body>
150</html>