/usr/share/doc/libucommon-dev/a00040.html is in libucommon-doc 3.2.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 | <!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: ucc::Conditional 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 Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Data 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 Structures</span></a></li>
<li><a href="classes.html"><span>Data Structure Index</span></a></li>
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
<li><a href="functions.html"><span>Data Fields</span></a></li>
</ul>
</div>
<div class="navpath"><a class="el" href="a00214.html">ucc</a>::<a class="el" href="a00040.html">Conditional</a>
</div>
</div>
<div class="contents">
<h1>ucc::Conditional Class Reference</h1><!-- doxytag: class="ucc::Conditional" -->
<p>The conditional is a common base for other thread synchronizing classes.
<a href="#_details">More...</a></p>
<p><code>#include <<a class="el" href="a00208_source.html">thread.h</a>></code></p>
<div class="dynheader">
Inheritance diagram for ucc::Conditional:</div>
<div class="dynsection">
<div class="center"><img src="a00372.png" border="0" usemap="#ucc_1_1_conditional_inherit__map" alt="Inheritance graph"/></div>
<map name="ucc_1_1_conditional_inherit__map" id="ucc_1_1_conditional_inherit__map">
<area shape="rect" id="node3" href="a00032.html" title="A portable implimentation of "barrier" thread sychronization." alt="" coords="213,59,307,88"/><area shape="rect" id="node5" href="a00034.html" title="A thread-safe buffer for serializing and streaming class data." alt="" coords="215,112,305,141"/><area shape="rect" id="node9" href="a00041.html" title="The conditional rw seperates scheduling for optizming behavior or rw locks." alt="" coords="176,165,344,195"/><area shape="rect" id="node19" href="a00109.html" title="Manage a thread-safe queue of objects through reference pointers." alt="" coords="215,219,305,248"/><area shape="rect" id="node23" href="a00112.html" title="Class for resource bound memory pools between threads." alt="" coords="177,272,343,301"/><area shape="rect" id="node37" href="a00114.html" title="Portable recursive exclusive lock." alt="" coords="212,325,308,355"/><area shape="rect" id="node39" href="a00132.html" title="A portable counting semaphore class." alt="" coords="197,379,323,408"/><area shape="rect" id="node41" href="a00155.html" title="Manage a thread-safe stack of objects through reference pointers." alt="" coords="217,432,303,461"/><area shape="rect" id="node7" href="a00035.html" title="A templated typed class for buffering of objects." alt="" coords="399,5,537,35"/><area shape="rect" id="node11" href="a00042.html" title="An optimized and convertable shared lock." alt="" coords="392,59,544,88"/><area shape="rect" id="node13" href="a00115.html" title="A generic and portable implimentation of Read/Write locking." alt="" coords="423,112,513,141"/><area shape="rect" id="node15" href="a00141.html" title="The shared pointer is used to manage a singleton instance of shared object." alt="" coords="397,165,539,195"/><area shape="rect" id="node17" href="a00138.html" title="Templated shared pointer for singleton shared objects of specific type." alt="" coords="593,165,777,195"/><area shape="rect" id="node21" href="a00110.html" title="A templated typed class for thread-safe queue of object pointers." alt="" coords="397,219,539,248"/><area shape="rect" id="node25" href="a00018.html" title="An array of reusable objects." alt="" coords="407,272,529,301"/><area shape="rect" id="node29" href="a00079.html" title="Map a reusable allocator over a named shared memory segment." alt="" coords="397,325,539,355"/><area shape="rect" id="node33" href="a00105.html" title="A mempager source of reusable objects." alt="" coords="405,379,531,408"/><area shape="rect" id="node27" href="a00017.html" title="An array of reusable types." alt="" coords="603,272,768,301"/><area shape="rect" id="node31" href="a00076.html" title="Template class to map typed resusble objects into shared memory heap." alt="" coords="593,325,777,355"/><area shape="rect" id="node35" href="a00101.html" title="A reusable private pool of reusable types." alt="" coords="600,379,771,408"/><area shape="rect" id="node43" href="a00156.html" title="A templated typed class for thread-safe stack of object pointers." alt="" coords="401,432,535,461"/></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>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#aff4c078d6e84e0c273eb321e3c5d0cd6">gettimeout</a> (<a class="el" href="a00201.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout, struct timespec *hires)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert a millisecond timeout into use for high resolution conditional timers. <a href="#aff4c078d6e84e0c273eb321e3c5d0cd6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static pthread_condattr_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a5428adf9d78903d78d4163d05aa93681">initializer</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function for getting conditional attributes for realtime scheduling. <a href="#a5428adf9d78903d78d4163d05aa93681"></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="a24b66cad805b3c511d6208c25c740212"></a><!-- doxytag: member="ucc::Conditional::broadcast" ref="a24b66cad805b3c511d6208c25c740212" args="(void)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a24b66cad805b3c511d6208c25c740212">broadcast</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Signal the conditional to release all waiting threads. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac45bacdcba7952650e2e60b92bb8e591"></a><!-- doxytag: member="ucc::Conditional::Conditional" ref="ac45bacdcba7952650e2e60b92bb8e591" args="()" -->
</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ac45bacdcba7952650e2e60b92bb8e591">Conditional</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize and construct conditional. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c0de58a83ec8e45fc8c1fdff0fc488b"></a><!-- doxytag: member="ucc::Conditional::lock" ref="a0c0de58a83ec8e45fc8c1fdff0fc488b" args="(void)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a0c0de58a83ec8e45fc8c1fdff0fc488b">lock</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Lock the conditional's supporting mutex. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfa7200ea5fcd5ddaef196c5ab98d0be"></a><!-- doxytag: member="ucc::Conditional::signal" ref="acfa7200ea5fcd5ddaef196c5ab98d0be" args="(void)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#acfa7200ea5fcd5ddaef196c5ab98d0be">signal</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Signal the conditional to release one waiting thread. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a919ca7b3262f5da264d8398bae7e839a"></a><!-- doxytag: member="ucc::Conditional::unlock" ref="a919ca7b3262f5da264d8398bae7e839a" args="(void)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a919ca7b3262f5da264d8398bae7e839a">unlock</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Unlock the conditional's supporting mutex. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e3df297dbc742f3180bfe8862d166a3"></a><!-- doxytag: member="ucc::Conditional::wait" ref="a6e3df297dbc742f3180bfe8862d166a3" args="(void)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a6e3df297dbc742f3180bfe8862d166a3">wait</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Wait (block) until signalled. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a9698e13d69348e17f8e744c25b7be0fa">wait</a> (struct timespec *timeout)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="a00040.html" title="The conditional is a common base for other thread synchronizing classes.">Conditional</a> wait for signal on timespec timeout. <a href="#a9698e13d69348e17f8e744c25b7be0fa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a3f860e115dfe20ff91c89eaa0db4115d">wait</a> (<a class="el" href="a00201.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="a00040.html" title="The conditional is a common base for other thread synchronizing classes.">Conditional</a> wait for signal on millisecond timeout. <a href="#a3f860e115dfe20ff91c89eaa0db4115d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e6b5cbe36b6ab25e0532618966436e6"></a><!-- doxytag: member="ucc::Conditional::~Conditional" ref="a1e6b5cbe36b6ab25e0532618966436e6" args="()" -->
</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a1e6b5cbe36b6ab25e0532618966436e6">~Conditional</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy conditional, release any blocked threads. <br/></td></tr>
<tr><td colspan="2"><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d41133ad1245e77ceac163329c024f6"></a><!-- doxytag: member="ucc::Conditional::ConditionalAccess" ref="a8d41133ad1245e77ceac163329c024f6" args="" -->
class </td><td class="memItemRight" valign="bottom"><b>ConditionalAccess</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e2baa3e939d2a97c38571681903fb98"></a><!-- doxytag: member="ucc::Conditional::TimedEvent" ref="a0e2baa3e939d2a97c38571681903fb98" args="" -->
class </td><td class="memItemRight" valign="bottom"><b>TimedEvent</b></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>The conditional is a common base for other thread synchronizing classes. </p>
<p>Many of the complex sychronization objects, including barriers, semaphores, and various forms of read/write locks are all built from the conditional. This assures that the minimum functionality to build higher order thread synchronizing objects is a pure conditional, and removes dependencies on what may be optional features or functions that may have different behaviors on different pthread implimentations and platforms. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>David Sugar <<a href="mailto:dyfet@gnutelephony.org">dyfet@gnutelephony.org</a>> </dd></dl>
<p>Definition at line <a class="el" href="a00208_source.html#l00086">86</a> of file <a class="el" href="a00208_source.html">thread.h</a>.</p>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="aff4c078d6e84e0c273eb321e3c5d0cd6"></a><!-- doxytag: member="ucc::Conditional::gettimeout" ref="aff4c078d6e84e0c273eb321e3c5d0cd6" args="(timeout_t timeout, struct timespec *hires)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static void ucc::Conditional::gettimeout </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00201.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> </td>
<td class="paramname"> <em>timeout</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct timespec * </td>
<td class="paramname"> <em>hires</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Convert a millisecond timeout into use for high resolution conditional timers. </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> </td><td>to convert. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>hires</em> </td><td>timespec representation to fill. </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented in <a class="el" href="a00041.html#a0312dd3986d22cbba971f0e265f43206">ucc::ConditionalAccess</a>.</p>
</div>
</div>
<a class="anchor" id="a5428adf9d78903d78d4163d05aa93681"></a><!-- doxytag: member="ucc::Conditional::initializer" ref="a5428adf9d78903d78d4163d05aa93681" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static pthread_condattr_t* ucc::Conditional::initializer </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td>
<td> ) </td>
<td><code> [inline, static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Support function for getting conditional attributes for realtime scheduling. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>attributes to use for creating realtime conditionals. </dd></dl>
<p>Definition at line <a class="el" href="a00208_source.html#l00190">190</a> of file <a class="el" href="a00208_source.html">thread.h</a>.</p>
</div>
</div>
<a class="anchor" id="a9698e13d69348e17f8e744c25b7be0fa"></a><!-- doxytag: member="ucc::Conditional::wait" ref="a9698e13d69348e17f8e744c25b7be0fa" args="(struct timespec *timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ucc::Conditional::wait </td>
<td>(</td>
<td class="paramtype">struct timespec * </td>
<td class="paramname"> <em>timeout</em></td>
<td> ) </td>
<td><code> [protected]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p><a class="el" href="a00040.html" title="The conditional is a common base for other thread synchronizing classes.">Conditional</a> wait for signal on timespec timeout. </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> </td><td>as a high resolution timespec. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if signalled, false if timer expired. </dd></dl>
</div>
</div>
<a class="anchor" id="a3f860e115dfe20ff91c89eaa0db4115d"></a><!-- doxytag: member="ucc::Conditional::wait" ref="a3f860e115dfe20ff91c89eaa0db4115d" args="(timeout_t timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ucc::Conditional::wait </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00201.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> </td>
<td class="paramname"> <em>timeout</em></td>
<td> ) </td>
<td><code> [protected]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p><a class="el" href="a00040.html" title="The conditional is a common base for other thread synchronizing classes.">Conditional</a> wait for signal on millisecond timeout. </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> </td><td>in milliseconds. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if signalled, false if timer expired. </dd></dl>
<p>Reimplemented in <a class="el" href="a00032.html#afa3a86dd56317a9f602fa62f15fbf958">ucc::barrier</a>, and <a class="el" href="a00132.html#a82518fcd87edc0f6610ac59cbd8c8dbc">ucc::semaphore</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>ucommon/<a class="el" href="a00208_source.html">thread.h</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Tue Jul 6 08:22:27 2010 for UCommon by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
|