Sophie

Sophie

distrib > Mandriva > 2010.1 > i586 > by-pkgid > 4f5f2dc0f55b453456458df885792b0b > files > 271

ucommon-doc-5.0.4-1mdv2010.2.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>ucommon: ucommon::Semaphore Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="a00208.html">ucommon</a>::<a class="el" href="a00119.html">Semaphore</a>
  </div>
</div>
<div class="contents">
<h1>ucommon::Semaphore Class Reference</h1><!-- doxytag: class="ucommon::Semaphore" --><!-- doxytag: inherits="ucommon::SharedProtocol,ucommon::Conditional" -->
<p>A portable counting semaphore class.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00202_source.html">thread.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ucommon::Semaphore:</div>
<div class="dynsection">
<div class="center"><img src="a00491.png" border="0" usemap="#ucommon_1_1_semaphore_inherit__map" alt="Inheritance graph"/></div>
<map name="ucommon_1_1_semaphore_inherit__map" id="ucommon_1_1_semaphore_inherit__map">
<area shape="rect" id="node2" href="a00128.html" title="An exclusive locking protocol interface base." alt="" coords="5,5,256,32"/><area shape="rect" id="node4" href="a00036.html" title="The conditional is a common base for other thread synchronizing classes." alt="" coords="280,5,501,32"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ucommon::Semaphore:</div>
<div class="dynsection">
<div class="center"><img src="a00492.png" border="0" usemap="#ucommon_1_1_semaphore_coll__map" alt="Collaboration graph"/></div>
<map name="ucommon_1_1_semaphore_coll__map" id="ucommon_1_1_semaphore_coll__map">
<area shape="rect" id="node2" href="a00128.html" title="An exclusive locking protocol interface base." alt="" coords="5,5,256,32"/><area shape="rect" id="node4" href="a00036.html" title="The conditional is a common base for other thread synchronizing classes." alt="" coords="280,5,501,32"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a50143f23273f54315cd83ac5c511f18f">getCount</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get active semaphore limit.  <a href="#a50143f23273f54315cd83ac5c511f18f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#acd59f2250fd0285caf1637027b31aae5">getUsed</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get current semaphore usage.  <a href="#acd59f2250fd0285caf1637027b31aae5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a7efd68b786a31e1f3eb96fba44a305"></a><!-- doxytag: member="ucommon::Semaphore::operator++" ref="a5a7efd68b786a31e1f3eb96fba44a305" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a5a7efd68b786a31e1f3eb96fba44a305">operator++</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience operator to wait on a counting semaphore. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4be4acc6e221898d8141345a3c740a29"></a><!-- doxytag: member="ucommon::Semaphore::operator&#45;&#45;" ref="a4be4acc6e221898d8141345a3c740a29" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a4be4acc6e221898d8141345a3c740a29">operator--</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience operator to release a counting semaphore. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab75f833b69046a147260881d3cc51415"></a><!-- doxytag: member="ucommon::Semaphore::release" ref="ab75f833b69046a147260881d3cc51415" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ab75f833b69046a147260881d3cc51415">release</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release the semaphore after waiting for it. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac11106c20b6902e1569655c49f6dc7fa"></a><!-- doxytag: member="ucommon::Semaphore::Semaphore" ref="ac11106c20b6902e1569655c49f6dc7fa" args="(unsigned count=0)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ac11106c20b6902e1569655c49f6dc7fa">Semaphore</a> (unsigned count=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a semaphore with an initial count of threads to permit. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ad00a80531a26ba70bf71ee36e18e34e0">set</a> (unsigned count)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Alter semaphore limit at runtime.  <a href="#ad00a80531a26ba70bf71ee36e18e34e0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a2f8beb2adca6e787007c56abc53c0811">wait</a> (<a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait until the semphore usage count is less than the thread limit.  <a href="#a2f8beb2adca6e787007c56abc53c0811"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#acd81d0597579f11e7302467f8e1a1a17">wait</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait until the semphore usage count is less than the thread limit.  <a href="#acd81d0597579f11e7302467f8e1a1a17"></a><br/></td></tr>
<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ac525ed765811fb1f0867f740785ac353">release</a> (<a class="el" href="a00119.html">Semaphore</a> &amp;sync)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience class to release a semaphore.  <a href="#ac525ed765811fb1f0867f740785ac353"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ac22d44843eccfa94aef327040dfe1e00">wait</a> (<a class="el" href="a00119.html">Semaphore</a> &amp;sync, <a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience class to wait on a semaphore.  <a href="#ac22d44843eccfa94aef327040dfe1e00"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a4b9c535b4a1a2a990a0e36bf1965b235">wait</a> (<a class="el" href="a00119.html">Semaphore</a> &amp;sync)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience class to wait on a semaphore.  <a href="#a4b9c535b4a1a2a990a0e36bf1965b235"></a><br/></td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39555d6d4f5365dd3b37e2930b41038c"></a><!-- doxytag: member="ucommon::Semaphore::Shlock" ref="a39555d6d4f5365dd3b37e2930b41038c" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a39555d6d4f5365dd3b37e2930b41038c">Shlock</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Protocol interface to share lock the object. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fa3cb9ff42a2a0783b4bde95f4e8733"></a><!-- doxytag: member="ucommon::Semaphore::Unlock" ref="a8fa3cb9ff42a2a0783b4bde95f4e8733" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a8fa3cb9ff42a2a0783b4bde95f4e8733">Unlock</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Protocol interface to release a lock. <br/></td></tr>
<tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11e2a1a712a38a5881ec4940f6ed62ae"></a><!-- doxytag: member="ucommon::Semaphore::count" ref="a11e2a1a712a38a5881ec4940f6ed62ae" args="" -->
unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><b>count</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01eeeddf907b746135fe930ecfd60d8e"></a><!-- doxytag: member="ucommon::Semaphore::used" ref="a01eeeddf907b746135fe930ecfd60d8e" args="" -->
unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><b>used</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a680c8988cb67acfc7e5e3280e7fe1f24"></a><!-- doxytag: member="ucommon::Semaphore::waits" ref="a680c8988cb67acfc7e5e3280e7fe1f24" args="" -->
unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><b>waits</b></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>A portable counting semaphore class. </p>
<p>A semaphore will allow threads to pass through it until the count is reached, and blocks further threads. Unlike pthread semaphore, our semaphore class supports it's count limit to be altered during runtime and the use of timed waits. This class also implements the <a class="el" href="a00123.html" title="A kind of smart pointer object to support shared locking protocol.">shared_lock</a> protocol. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>David Sugar &lt;<a href="mailto:dyfet@gnutelephony.org">dyfet@gnutelephony.org</a>&gt; </dd></dl>

<p>Definition at line <a class="el" href="a00202_source.html#l01023">1023</a> of file <a class="el" href="a00202_source.html">thread.h</a>.</p>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a50143f23273f54315cd83ac5c511f18f"></a><!-- doxytag: member="ucommon::Semaphore::getCount" ref="a50143f23273f54315cd83ac5c511f18f" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned ucommon::Semaphore::getCount </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get active semaphore limit. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>count of maximum threads to pass. </dd></dl>

</div>
</div>
<a class="anchor" id="acd59f2250fd0285caf1637027b31aae5"></a><!-- doxytag: member="ucommon::Semaphore::getUsed" ref="acd59f2250fd0285caf1637027b31aae5" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned ucommon::Semaphore::getUsed </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get current semaphore usage. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of active threads. </dd></dl>

</div>
</div>
<a class="anchor" id="ac525ed765811fb1f0867f740785ac353"></a><!-- doxytag: member="ucommon::Semaphore::release" ref="ac525ed765811fb1f0867f740785ac353" args="(Semaphore &amp;sync)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Semaphore::release </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00119.html">Semaphore</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>sync</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convenience class to release a semaphore. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>sync</em>&nbsp;</td><td>object to release. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="a00202_source.html#l01107">1107</a> of file <a class="el" href="a00202_source.html">thread.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00119_ac525ed765811fb1f0867f740785ac353_cgraph.png" border="0" usemap="#a00119_ac525ed765811fb1f0867f740785ac353_cgraph_map" alt=""></div>
<map name="a00119_ac525ed765811fb1f0867f740785ac353_cgraph_map" id="a00119_ac525ed765811fb1f0867f740785ac353_cgraph">
<area shape="rect" id="node3" href="a00119.html#ab75f833b69046a147260881d3cc51415" title="Release the semaphore after waiting for it." alt="" coords="348,5,639,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ad00a80531a26ba70bf71ee36e18e34e0"></a><!-- doxytag: member="ucommon::Semaphore::set" ref="ad00a80531a26ba70bf71ee36e18e34e0" args="(unsigned count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ucommon::Semaphore::set </td>
          <td>(</td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>count</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Alter semaphore limit at runtime. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>of threads to allow. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac22d44843eccfa94aef327040dfe1e00"></a><!-- doxytag: member="ucommon::Semaphore::wait" ref="ac22d44843eccfa94aef327040dfe1e00" args="(Semaphore &amp;sync, timeout_t timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Semaphore::wait </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00119.html">Semaphore</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>sync</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convenience class to wait on a semaphore. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>sync</em>&nbsp;</td><td>object to wait on. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>in milliseconds. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>if success, false if timeout. </dd></dl>

<p>Definition at line <a class="el" href="a00202_source.html#l01100">1100</a> of file <a class="el" href="a00202_source.html">thread.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00119_ac22d44843eccfa94aef327040dfe1e00_cgraph.png" border="0" usemap="#a00119_ac22d44843eccfa94aef327040dfe1e00_cgraph_map" alt=""></div>
<map name="a00119_ac22d44843eccfa94aef327040dfe1e00_cgraph_map" id="a00119_ac22d44843eccfa94aef327040dfe1e00_cgraph">
<area shape="rect" id="node3" href="a00119.html#acd81d0597579f11e7302467f8e1a1a17" title="Wait until the semphore usage count is less than the thread limit." alt="" coords="319,5,580,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a4b9c535b4a1a2a990a0e36bf1965b235"></a><!-- doxytag: member="ucommon::Semaphore::wait" ref="a4b9c535b4a1a2a990a0e36bf1965b235" args="(Semaphore &amp;sync)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Semaphore::wait </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00119.html">Semaphore</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>sync</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convenience class to wait on a semaphore. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>sync</em>&nbsp;</td><td>object to wait on. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="a00202_source.html#l01091">1091</a> of file <a class="el" href="a00202_source.html">thread.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00119_a4b9c535b4a1a2a990a0e36bf1965b235_cgraph.png" border="0" usemap="#a00119_a4b9c535b4a1a2a990a0e36bf1965b235_cgraph_map" alt=""></div>
<map name="a00119_a4b9c535b4a1a2a990a0e36bf1965b235_cgraph_map" id="a00119_a4b9c535b4a1a2a990a0e36bf1965b235_cgraph">
<area shape="rect" id="node3" href="a00119.html#acd81d0597579f11e7302467f8e1a1a17" title="Wait until the semphore usage count is less than the thread limit." alt="" coords="319,5,580,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a2f8beb2adca6e787007c56abc53c0811"></a><!-- doxytag: member="ucommon::Semaphore::wait" ref="a2f8beb2adca6e787007c56abc53c0811" args="(timeout_t timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::Semaphore::wait </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Wait until the semphore usage count is less than the thread limit. </p>
<p>Increase used count for our thread when unblocked, or return without changing if timed out. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>to wait in millseconds. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if success, false if timeout. </dd></dl>

<p>Reimplemented from <a class="el" href="a00036.html#a9e5e1ae6d270a630f2b1eeded43dc8a4">ucommon::Conditional</a>.</p>

</div>
</div>
<a class="anchor" id="acd81d0597579f11e7302467f8e1a1a17"></a><!-- doxytag: member="ucommon::Semaphore::wait" ref="acd81d0597579f11e7302467f8e1a1a17" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ucommon::Semaphore::wait </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Wait until the semphore usage count is less than the thread limit. </p>
<p>Increase used count for our thread when unblocked. </p>

<p>Reimplemented from <a class="el" href="a00036.html#a32b09f4b5196eeef1a7ba7066ec06cc4">ucommon::Conditional</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>ucommon/<a class="el" href="a00202_source.html">thread.h</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jul 14 16:39:55 2011 for ucommon by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>