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      span.virtual_style
22      {
23        font-size			 : 8pt;
24        color				 : white;
25        font-weight			: bold;
26        background			: #0a0;
27        border-left			: solid 1px #0f0;
28        border-top			: solid 1px #0f0;
29        border-right		: solid 1px #060;
30        border-bottom		: solid 1px #060;
31        padding-left		: 2px;
32        padding-right		: 2px;
33      }
34      span.protected_style
35      {
36        font-size			 : 8pt;
37        color				 : white;
38        font-weight			: bold;
39        background			: #444;
40        border-left			: solid 1px #ccc;
41        border-top			: solid 1px #ccc;
42        border-right		: solid 1px #222;
43        border-bottom		: solid 1px #222;
44        padding-left		: 2px;
45        padding-right		: 2px;
46      }
47        --></style>
48<title>nn::os::Semaphore</title>
49  </head>
50  <body>
51<h1><CODE><a href="../../../nn/Overview.html">nn</a>::<a href="../../../nn/os/Overview.html">os</a>::Semaphore</CODE> Class</h1>
52    <div class="section">
53<b>Header file: </b>nn/os.h</div>
54<h2>Syntax</h2>
55    <div class="section">
56<pre class="definition">class Semaphore : public <a href="../../../nn/os/InterruptEvent/Overview.html">nn::os::InterruptEvent</a></pre>
57    </div>
58<h2>Description</h2>
59    <div class="section">
60<p>Class for handling semaphores. Semaphores are synchronization objects that have counters.</p><p>Generally, use the <CODE><a href="../../../nn/os/LightSemaphore/Overview.html">nn::os::LightSemaphore</a></CODE> class instead of <CODE><a href="../../../nn/os/Semaphore/Overview.html">nn::os::Semaphore</a></CODE>. The <CODE><a href="../../../nn/os/LightSemaphore/Overview.html">nn::os::LightSemaphore</a></CODE> class is better than the <CODE><a href="../../../nn/os/Semaphore/Overview.html">nn::os::Semaphore</a></CODE> class in most respects, except that it cannot wait for multiple synchronization objects.</p><p>The semaphore <CODE>Wait</CODE> operation first waits for the semaphore counter to become greater than zero, then increments the semaphore counter by one. <CODE>Wait</CODE> operations are not released while the semaphore counter is zero.</p><p>Call <a href="../../../nn/os/Semaphore/Release.html"><CODE>Release</CODE></a> in order to increment a semaphore's counter.</p><p>See the reference for the <a href="../../../nn/os/Event/Overview.html"><CODE>nn::os::Event</CODE></a> class for more information about synchronization objects.</p><p>You can create up to 8 <a href="../../../nn/os/Semaphore/Overview.html"><CODE>Semaphore</CODE></a> objects. Note also that different functions might use up resources that count against this limit.</p><!-- write here --></div>
61    <a name="function" id="function">
62<h2>Member Functions</h2>
63      <div class="section">
64        <table class="members">
65          <tr>
66            <td width="100">  </td>
67            <th>
68<a href="../../../nn/os/Semaphore/Semaphore.html"><CODE>Semaphore</CODE></a>
69            </th>
70<td>Constructs and initializes a semaphore.</td>
71          </tr>
72          <tr>
73            <td width="100">  </td>
74            <th>
75<a href="../../../nn/os/Semaphore/Initialize.html"><CODE>Initialize</CODE></a>
76            </th>
77<td>Initializes a semaphore that has already been constructed.</td>
78          </tr>
79          <tr>
80            <td width="100">  </td>
81            <th>
82<a href="../../../nn/os/Semaphore/TryInitialize.html"><CODE>TryInitialize</CODE></a>
83            </th>
84<td>Tries to initialize a semaphore that has already been constructed.</td>
85          </tr>
86          <tr>
87            <td width="100">  </td>
88            <th>
89<a href="../../../nn/os/Semaphore/Finalize.html"><CODE>Finalize</CODE></a>
90            </th>
91<td>Destroys a semaphore.</td>
92          </tr>
93          <tr>
94            <td width="100">  </td>
95            <th>
96<a href="../../../nn/os/Semaphore/~Semaphore.html"><CODE>~Semaphore</CODE></a>
97            </th>
98<td>Destructor.</td>
99          </tr>
100          <tr>
101            <td width="100">  </td>
102            <th>
103<a href="../../../nn/os/Semaphore/Release.html"><CODE>Release</CODE></a>
104            </th>
105<td>Releases a semaphore (performs a &quot;V operation&quot;) and increases the counter value.</td>
106          </tr>
107          <tr>
108            <td width="100">  </td>
109            <th>
110<a href="../../../nn/os/Semaphore/Acquire.html"><CODE>Acquire</CODE></a>
111            </th>
112<td>Acquires a semaphore (performs a &quot;P operation&quot;) and decrements the counter value.</td>
113          </tr>
114          <tr>
115            <td width="100">  </td>
116            <th>
117<a href="../../../nn/os/Semaphore/TryAcquire.html"><CODE>TryAcquire</CODE></a>
118            </th>
119<td>Tries to acquire a semaphore (perform a &quot;P operation&quot;).</td>
120          </tr> </table>
121      </div>
122    </a>
123<h2>Class Hierarchy</h2>
124    <div class="section">
125<p class="hierarchy"><span>ADLFireWall::NonCopyable</span><br />&nbsp;&nbsp;<a href="../../../nn/os/HandleObject/Overview.html">nn::os::HandleObject</a><br />&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../../nn/os/WaitObject/Overview.html">nn::os::WaitObject</a><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../../nn/os/InterruptEvent/Overview.html">nn::os::InterruptEvent</a><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>nn::os::Semaphore</b>
126      </p>
127    </div>
128<h2>Revision History</h2>
129    <div class="section">
130      <dl class="history">
131        <dt>2010/01/07</dt>
132<dd>Initial version.<br />
133        </dd>
134      </dl>
135    </div>
136  <hr><p>CONFIDENTIAL</p></body>
137</html>
138