blob: aa56dfa34d930cbb01b73730b2f1063c15651e7a [file] [log] [blame]
<!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>activemq-cpp-3.4.0: decaf::util::concurrent::Mutex Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">activemq-cpp-3.4.0</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
initNavTree('classdecaf_1_1util_1_1concurrent_1_1_mutex.html','');
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle">
<h1>decaf::util::concurrent::Mutex Class Reference</h1> </div>
</div>
<div class="contents">
<!-- doxytag: class="decaf::util::concurrent::Mutex" --><!-- doxytag: inherits="decaf::util::concurrent::Synchronizable" -->
<p><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html" title="Mutex object that offers recursive support on all platforms as well as providing the ability to use t...">Mutex</a> object that offers recursive support on all platforms as well as providing the ability to use the standard wait / notify pattern used in languages like Java.
<a href="#_details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_mutex_8h_source.html">src/main/decaf/util/concurrent/Mutex.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for decaf::util::concurrent::Mutex:</div>
<div class="dyncontent">
<div class="center"><img src="classdecaf_1_1util_1_1concurrent_1_1_mutex__inherit__graph.png" border="0" usemap="#decaf_1_1util_1_1concurrent_1_1_mutex_inherit__map" alt="Inheritance graph"/></div>
<map name="decaf_1_1util_1_1concurrent_1_1_mutex_inherit__map" id="decaf_1_1util_1_1concurrent_1_1_mutex_inherit__map">
<area shape="rect" id="node2" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html" title="The interface for all synchronizable objects (that is, objects that can be locked and unlocked)..." alt="" coords="5,5,291,35"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#acbc3d03d201ce40764ff28a7a13cf7e6">Mutex</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#a264d42efd0c6fa1e7b3221bd0f51d13d">Mutex</a> (const std::string &amp;name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#a69a1139fdbcfd16561d0f0fe7556e7c4">~Mutex</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#ae9f28b272566099f3db5b416d1a4312d">getName</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#aec320403573cf818a5d44b2ebb3cbfc9">toString</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#a4e78aab407b995ebae8b6726c8e64a10">lock</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Locks the object. <a href="#a4e78aab407b995ebae8b6726c8e64a10"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#a8559b3d5780c8cd94e20e4139a1a5478">tryLock</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempts to <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_lock.html" title="A wrapper class around a given synchronization mechanism that provides automatic release upon destruc...">Lock</a> the object, if the lock is already held by another thread than this method returns false. <a href="#a8559b3d5780c8cd94e20e4139a1a5478"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#a8f48a6e492a7cbfd1db7355725f29f14">unlock</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Unlocks the object. <a href="#a8f48a6e492a7cbfd1db7355725f29f14"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#aaaefb431e14629e3ccee7fa6136e9176">wait</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits on a signal from this object, which is generated by a call to Notify. <a href="#aaaefb431e14629e3ccee7fa6136e9176"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#a37d7d4b88e538ca30940400c7a3659f7">wait</a> (long long millisecs)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits on a signal from this object, which is generated by a call to Notify. <a href="#a37d7d4b88e538ca30940400c7a3659f7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#a328a4738a2c36301078ebb0fabc2c37d">wait</a> (long long millisecs, int nanos)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits on a signal from this object, which is generated by a call to Notify. <a href="#a328a4738a2c36301078ebb0fabc2c37d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#abcf102f6b622c0e22dc8e30f3bf0d965">notify</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Signals a waiter on this object that it can now wake up and continue. <a href="#abcf102f6b622c0e22dc8e30f3bf0d965"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html#a5a0d0f047f4783bb3cc6ab9364452ac7">notifyAll</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Signals the waiters on this object that it can now wake up and continue. <a href="#a5a0d0f047f4783bb3cc6ab9364452ac7"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html" title="Mutex object that offers recursive support on all platforms as well as providing the ability to use t...">Mutex</a> object that offers recursive support on all platforms as well as providing the ability to use the standard wait / notify pattern used in languages like Java. </p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0 </dd></dl>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="acbc3d03d201ce40764ff28a7a13cf7e6"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::Mutex" ref="acbc3d03d201ce40764ff28a7a13cf7e6" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">decaf::util::concurrent::Mutex::Mutex </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a264d42efd0c6fa1e7b3221bd0f51d13d"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::Mutex" ref="a264d42efd0c6fa1e7b3221bd0f51d13d" args="(const std::string &amp;name)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">decaf::util::concurrent::Mutex::Mutex </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a69a1139fdbcfd16561d0f0fe7556e7c4"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::~Mutex" ref="a69a1139fdbcfd16561d0f0fe7556e7c4" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual decaf::util::concurrent::Mutex::~Mutex </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ae9f28b272566099f3db5b416d1a4312d"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::getName" ref="ae9f28b272566099f3db5b416d1a4312d" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string decaf::util::concurrent::Mutex::getName </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a4e78aab407b995ebae8b6726c8e64a10"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::lock" ref="a4e78aab407b995ebae8b6726c8e64a10" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void decaf::util::concurrent::Mutex::lock </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Locks the object. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname">RuntimeException</td><td>if an error occurs while locking the object. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html#aeff8d806ec08a8ebef540fc059947c48">decaf::util::concurrent::Synchronizable</a>.</p>
<p>Referenced by <a class="el" href="classdecaf_1_1util_1_1_stl_queue.html#a2cdea1cdd8c7944295c0f06079e8089c">decaf::util::StlQueue&lt; T &gt;::lock()</a>, <a class="el" href="classdecaf_1_1util_1_1_stl_map.html#a09ad551150779e19be31397798327815">decaf::util::StlMap&lt; std::string, cms::Topic * &gt;::lock()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_copy_on_write_array_list.html#a6057a5c7d3843eefd2731e4f5a618283">decaf::util::concurrent::CopyOnWriteArrayList&lt; ServiceListener * &gt;::lock()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_concurrent_stl_map.html#a073167095bfa87791221ea5a05b456a6">decaf::util::concurrent::ConcurrentStlMap&lt; Pointer&lt; ProducerId &gt;, Pointer&lt; ProducerState &gt;, ProducerId::COMPARATOR &gt;::lock()</a>, and <a class="el" href="classdecaf_1_1util_1_1_abstract_collection.html#a58b06349287bdd9cbf2f84aa7dcff7ba">decaf::util::AbstractCollection&lt; cms::Connection * &gt;::lock()</a>.</p>
</div>
</div>
<a class="anchor" id="abcf102f6b622c0e22dc8e30f3bf0d965"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::notify" ref="abcf102f6b622c0e22dc8e30f3bf0d965" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void decaf::util::concurrent::Mutex::notify </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Signals a waiter on this object that it can now wake up and continue. </p>
<p>Must have this object locked before calling.</p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname">IllegalMonitorStateException</td><td>- if the current thread is not the owner of the the <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html" title="The interface for all synchronizable objects (that is, objects that can be locked and unlocked)...">Synchronizable</a> Object. </td></tr>
<tr><td class="paramname">RuntimeException</td><td>if an error occurs while notifying one of the waiting threads. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html#ad62b154e5f2709b5471b00da52d0ad0b">decaf::util::concurrent::Synchronizable</a>.</p>
<p>Referenced by <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_linked_blocking_queue.html#a0774d018b4a047a2a1313288b2f652a8">decaf::util::concurrent::LinkedBlockingQueue&lt; E &gt;::clear()</a>, <a class="el" href="classdecaf_1_1util_1_1_stl_queue.html#ade6c5d0ac8023550797bbe26297824fa">decaf::util::StlQueue&lt; T &gt;::notify()</a>, <a class="el" href="classdecaf_1_1util_1_1_stl_map.html#aab308c2e801eb7db9f16ff8848b7c77b">decaf::util::StlMap&lt; std::string, cms::Topic * &gt;::notify()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_copy_on_write_array_list.html#a8a96fc4331aa1908c1400c5ade12cb9b">decaf::util::concurrent::CopyOnWriteArrayList&lt; ServiceListener * &gt;::notify()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_concurrent_stl_map.html#a2698aead7a66924c2506f1b977c5d06f">decaf::util::concurrent::ConcurrentStlMap&lt; Pointer&lt; ProducerId &gt;, Pointer&lt; ProducerState &gt;, ProducerId::COMPARATOR &gt;::notify()</a>, <a class="el" href="classdecaf_1_1util_1_1_abstract_collection.html#a7195f1edb2675724a361d71f281220eb">decaf::util::AbstractCollection&lt; cms::Connection * &gt;::notify()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_linked_blocking_queue.html#acc422303761c38f07b340cdc341d7149">decaf::util::concurrent::LinkedBlockingQueue&lt; E &gt;::offer()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_linked_blocking_queue.html#aa16b86e58825b1cd7ac1092e35f439ac">decaf::util::concurrent::LinkedBlockingQueue&lt; E &gt;::poll()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_linked_blocking_queue.html#a0a2bfa035134ecf04b747923fb9184c7">decaf::util::concurrent::LinkedBlockingQueue&lt; E &gt;::put()</a>, and <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_linked_blocking_queue.html#a093b20a55f62e3e8cf4f81b1b9a4e5b1">decaf::util::concurrent::LinkedBlockingQueue&lt; E &gt;::take()</a>.</p>
</div>
</div>
<a class="anchor" id="a5a0d0f047f4783bb3cc6ab9364452ac7"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::notifyAll" ref="a5a0d0f047f4783bb3cc6ab9364452ac7" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void decaf::util::concurrent::Mutex::notifyAll </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Signals the waiters on this object that it can now wake up and continue. </p>
<p>Must have this object locked before calling.</p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname">IllegalMonitorStateException</td><td>- if the current thread is not the owner of the the <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html" title="The interface for all synchronizable objects (that is, objects that can be locked and unlocked)...">Synchronizable</a> Object. </td></tr>
<tr><td class="paramname">RuntimeException</td><td>if an error occurs while notifying the waiting threads. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html#aa3af140ed7eded4f7ff59833c0bc619a">decaf::util::concurrent::Synchronizable</a>.</p>
<p>Referenced by <a class="el" href="classdecaf_1_1util_1_1_stl_queue.html#aa11de7a3bbc8ab952ba46372825f1e64">decaf::util::StlQueue&lt; T &gt;::notifyAll()</a>, <a class="el" href="classdecaf_1_1util_1_1_stl_map.html#a6bd7d94d49842f75b18344930b75d3c2">decaf::util::StlMap&lt; std::string, cms::Topic * &gt;::notifyAll()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_copy_on_write_array_list.html#a935ef769776ea3e5ef0784e15c7b9982">decaf::util::concurrent::CopyOnWriteArrayList&lt; ServiceListener * &gt;::notifyAll()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_concurrent_stl_map.html#aaf31f790c9ac4c0b87fda6f5adea6f45">decaf::util::concurrent::ConcurrentStlMap&lt; Pointer&lt; ProducerId &gt;, Pointer&lt; ProducerState &gt;, ProducerId::COMPARATOR &gt;::notifyAll()</a>, and <a class="el" href="classdecaf_1_1util_1_1_abstract_collection.html#af53d06c51e7aa21f9a30acc4ae31e783">decaf::util::AbstractCollection&lt; cms::Connection * &gt;::notifyAll()</a>.</p>
</div>
</div>
<a class="anchor" id="aec320403573cf818a5d44b2ebb3cbfc9"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::toString" ref="aec320403573cf818a5d44b2ebb3cbfc9" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string decaf::util::concurrent::Mutex::toString </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a8559b3d5780c8cd94e20e4139a1a5478"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::tryLock" ref="a8559b3d5780c8cd94e20e4139a1a5478" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual bool decaf::util::concurrent::Mutex::tryLock </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Attempts to <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_lock.html" title="A wrapper class around a given synchronization mechanism that provides automatic release upon destruc...">Lock</a> the object, if the lock is already held by another thread than this method returns false. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the lock was acquired, false if it is already held by another thread.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname">RuntimeException</td><td>if an error occurs while locking the object. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html#a6aa79e4c2590ec4387d7bb2b7d265c47">decaf::util::concurrent::Synchronizable</a>.</p>
<p>Referenced by <a class="el" href="classdecaf_1_1util_1_1_stl_queue.html#aacfbedfd89b1736474e7128cc40c6ece">decaf::util::StlQueue&lt; T &gt;::tryLock()</a>, <a class="el" href="classdecaf_1_1util_1_1_stl_map.html#a2c4a4cf44898d7bad58efbf0a7540d6b">decaf::util::StlMap&lt; std::string, cms::Topic * &gt;::tryLock()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_copy_on_write_array_list.html#aef1ce4a7101e660b9f4016e3fe28958b">decaf::util::concurrent::CopyOnWriteArrayList&lt; ServiceListener * &gt;::tryLock()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_concurrent_stl_map.html#aef127a8c60fc98306a1bca88bd8e4e99">decaf::util::concurrent::ConcurrentStlMap&lt; Pointer&lt; ProducerId &gt;, Pointer&lt; ProducerState &gt;, ProducerId::COMPARATOR &gt;::tryLock()</a>, and <a class="el" href="classdecaf_1_1util_1_1_abstract_collection.html#adbd1278f965b7205dc8e8f89fc82872e">decaf::util::AbstractCollection&lt; cms::Connection * &gt;::tryLock()</a>.</p>
</div>
</div>
<a class="anchor" id="a8f48a6e492a7cbfd1db7355725f29f14"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::unlock" ref="a8f48a6e492a7cbfd1db7355725f29f14" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void decaf::util::concurrent::Mutex::unlock </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Unlocks the object. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname">RuntimeException</td><td>if an error occurs while unlocking the object. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html#aabb6c431936a7d4c9810a5f1a99bde21">decaf::util::concurrent::Synchronizable</a>.</p>
<p>Referenced by <a class="el" href="classdecaf_1_1util_1_1_stl_queue.html#a59cdf5e83458e4a888bb5c0c3c57b24c">decaf::util::StlQueue&lt; T &gt;::unlock()</a>, <a class="el" href="classdecaf_1_1util_1_1_stl_map.html#ac1805f329822042c886bdc370363c7dc">decaf::util::StlMap&lt; std::string, cms::Topic * &gt;::unlock()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_copy_on_write_array_list.html#a3f16177058f4033cf60af91c1d88faa1">decaf::util::concurrent::CopyOnWriteArrayList&lt; ServiceListener * &gt;::unlock()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_concurrent_stl_map.html#aaca964c3a28ced48573f2ffda4097daa">decaf::util::concurrent::ConcurrentStlMap&lt; Pointer&lt; ProducerId &gt;, Pointer&lt; ProducerState &gt;, ProducerId::COMPARATOR &gt;::unlock()</a>, and <a class="el" href="classdecaf_1_1util_1_1_abstract_collection.html#a38970b1447b07759aec046c3a57c53e1">decaf::util::AbstractCollection&lt; cms::Connection * &gt;::unlock()</a>.</p>
</div>
</div>
<a class="anchor" id="a328a4738a2c36301078ebb0fabc2c37d"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::wait" ref="a328a4738a2c36301078ebb0fabc2c37d" args="(long long millisecs, int nanos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void decaf::util::concurrent::Mutex::wait </td>
<td>(</td>
<td class="paramtype">long long&#160;</td>
<td class="paramname"><em>millisecs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nanos</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Waits on a signal from this object, which is generated by a call to Notify. </p>
<p>Must have this object locked before calling. This wait will timeout after the specified time interval. This method is similar to the one argument wait function except that it add a finer grained control over the amount of time that it waits by adding in the additional nanosecond argument.</p>
<p>NOTE: The ability to wait accurately at a nanosecond scale depends on the platform and OS that the Decaf API is running on, some systems do not provide an accurate enough clock to provide this level of granularity.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">millisecs</td><td>the time in milliseconds to wait, or WAIT_INIFINITE </td></tr>
<tr><td class="paramname">nanos</td><td>additional time in nanoseconds with a range of 0-999999</td></tr>
</table>
</dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname">IllegalArgumentException</td><td>if an error occurs or the nanos argument is not in the range of [0-999999] </td></tr>
<tr><td class="paramname">RuntimeException</td><td>if an error occurs while waiting on the object. </td></tr>
<tr><td class="paramname">InterruptedException</td><td>if the wait is interrupted before it completes. </td></tr>
<tr><td class="paramname">IllegalMonitorStateException</td><td>- if the current thread is not the owner of the the <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html" title="The interface for all synchronizable objects (that is, objects that can be locked and unlocked)...">Synchronizable</a> Object. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html#a954b500f0e3cba3a366da91e210893ea">decaf::util::concurrent::Synchronizable</a>.</p>
</div>
</div>
<a class="anchor" id="a37d7d4b88e538ca30940400c7a3659f7"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::wait" ref="a37d7d4b88e538ca30940400c7a3659f7" args="(long long millisecs)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void decaf::util::concurrent::Mutex::wait </td>
<td>(</td>
<td class="paramtype">long long&#160;</td>
<td class="paramname"><em>millisecs</em></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Waits on a signal from this object, which is generated by a call to Notify. </p>
<p>Must have this object locked before calling. This wait will timeout after the specified time interval.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">millisecs</td><td>the time in milliseconds to wait, or WAIT_INIFINITE</td></tr>
</table>
</dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname">RuntimeException</td><td>if an error occurs while waiting on the object. </td></tr>
<tr><td class="paramname">InterruptedException</td><td>if the wait is interrupted before it completes. </td></tr>
<tr><td class="paramname">IllegalMonitorStateException</td><td>- if the current thread is not the owner of the the <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html" title="The interface for all synchronizable objects (that is, objects that can be locked and unlocked)...">Synchronizable</a> Object. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html#a84939d5f17b846ba0aeb5824ec6fff41">decaf::util::concurrent::Synchronizable</a>.</p>
</div>
</div>
<a class="anchor" id="aaaefb431e14629e3ccee7fa6136e9176"></a><!-- doxytag: member="decaf::util::concurrent::Mutex::wait" ref="aaaefb431e14629e3ccee7fa6136e9176" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void decaf::util::concurrent::Mutex::wait </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Waits on a signal from this object, which is generated by a call to Notify. </p>
<p>Must have this object locked before calling.</p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname">RuntimeException</td><td>if an error occurs while waiting on the object. </td></tr>
<tr><td class="paramname">InterruptedException</td><td>if the wait is interrupted before it completes. </td></tr>
<tr><td class="paramname">IllegalMonitorStateException</td><td>- if the current thread is not the owner of the the <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html" title="The interface for all synchronizable objects (that is, objects that can be locked and unlocked)...">Synchronizable</a> Object. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_synchronizable.html#a2f7a5619b8800c295626983b9c7808a6">decaf::util::concurrent::Synchronizable</a>.</p>
<p>Referenced by <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_linked_blocking_queue.html#acc422303761c38f07b340cdc341d7149">decaf::util::concurrent::LinkedBlockingQueue&lt; E &gt;::offer()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_linked_blocking_queue.html#aa16b86e58825b1cd7ac1092e35f439ac">decaf::util::concurrent::LinkedBlockingQueue&lt; E &gt;::poll()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_linked_blocking_queue.html#a0a2bfa035134ecf04b747923fb9184c7">decaf::util::concurrent::LinkedBlockingQueue&lt; E &gt;::put()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_linked_blocking_queue.html#a093b20a55f62e3e8cf4f81b1b9a4e5b1">decaf::util::concurrent::LinkedBlockingQueue&lt; E &gt;::take()</a>, <a class="el" href="classdecaf_1_1util_1_1_stl_queue.html#a59c25e1831c3dbaff3a7399a02ef9462">decaf::util::StlQueue&lt; T &gt;::wait()</a>, <a class="el" href="classdecaf_1_1util_1_1_stl_map.html#af68e83ea9c0e681b7c0b6bf6520d0618">decaf::util::StlMap&lt; std::string, cms::Topic * &gt;::wait()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_copy_on_write_array_list.html#a1f26546287ed7fdb8445270ef93706c9">decaf::util::concurrent::CopyOnWriteArrayList&lt; ServiceListener * &gt;::wait()</a>, <a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_concurrent_stl_map.html#a7639da4f97d5523a8def1896f3a2cb28">decaf::util::concurrent::ConcurrentStlMap&lt; Pointer&lt; ProducerId &gt;, Pointer&lt; ProducerState &gt;, ProducerId::COMPARATOR &gt;::wait()</a>, and <a class="el" href="classdecaf_1_1util_1_1_abstract_collection.html#a5f5d42c10b67b8268e662d77d6587a04">decaf::util::AbstractCollection&lt; cms::Connection * &gt;::wait()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/main/decaf/util/concurrent/<a class="el" href="_mutex_8h_source.html">Mutex.h</a></li>
</ul>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacedecaf.html">decaf</a> </li>
<li class="navelem"><a class="el" href="namespacedecaf_1_1util.html">util</a> </li>
<li class="navelem"><a class="el" href="namespacedecaf_1_1util_1_1concurrent.html">concurrent</a> </li>
<li class="navelem"><a class="el" href="classdecaf_1_1util_1_1concurrent_1_1_mutex.html">Mutex</a> </li>
<li class="footer">Generated on Mon Apr 25 2011 for activemq-cpp-3.4.0 by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </li>
</ul>
</div>
</body>
</html>