Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > b293cf61b174f6cb974e48c9096dc9b3 > files > 659

lib64commoncpp-devel-1.8.1-7.mga4.x86_64.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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>GNU CommonC++: thread.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">GNU CommonC++
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <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><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_bfccd401955b95cf8c75461437045ac0.html">inc</a></li><li class="navelem"><a class="el" href="dir_6b3e09e31d3da6038137f0238e9fb19b.html">cc++</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">thread.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="thread_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Copyright (C) 1999-2005 Open Source Telecom Corporation.</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// Copyright (C) 2006-2010 David Sugar, Tycho Softworks.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">// This program is free software; you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// the Free Software Foundation; either version 2 of the License, or</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// (at your option) any later version.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// along with this program; if not, write to the Free Software</span></div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">// As a special exception, you may use this file as part of a free software</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">// library without restriction.  Specifically, if other files instantiate</span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">// templates or use macros or inline functions from this file, or you compile</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment">// this file and link it with other files to produce an executable, this</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">// file does not by itself cause the resulting executable to be covered by</span></div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">// the GNU General Public License.  This exception does not however</span></div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">// invalidate any other reasons why the executable file might be covered by</span></div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">// the GNU General Public License.</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">// This exception applies only to the code released under the name GNU</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// Common C++.  If you copy code from other releases into a copy of GNU</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// Common C++, as the General Public License permits, the exception does</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// not apply to the code that you add in this way.  To avoid misleading</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">// anyone as to the status of such modified files, you must delete</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">// this exception notice from them.</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// If you write modifications of your own for GNU Common C++, it is your choice</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// whether to permit this exception to apply to your modifications.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// If you do not wish that, delete this exception notice.</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#ifndef CCXX_THREAD_H_</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CCXX_THREAD_H_</span></div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="config_8h.html">cc++/config.h</a>&gt;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#ifndef CCXX_STRING_H_</span></div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;<a class="code" href="string_8h.html">cc++/string.h</a>&gt;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="thread_8h.html#a9fc514088fa3739a1300ce30ca6585d5">   54</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CCXX_POSIX</span></div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif // !WIN32</span></div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#include &lt;ctime&gt;</span></div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;pthread.h&gt;</span></div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#endif // !WIN32</span></div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#undef CCXX_USE_WIN32_ATOMIC</span></div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;time.h&gt;</span></div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#ifdef  _THR_UNIXWARE</span></div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef  PTHREAD_MUTEXTYPE_RECURSIVE</span></div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="thread_8h.html#a3f0d0226a694bf1e508e1b1c758e6ae6">   73</a></span>&#160;<span class="keyword">typedef</span> pthread_t   <a class="code" href="thread_8h.html#a3f0d0226a694bf1e508e1b1c758e6ae6">cctid_t</a>;</div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">   74</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>   <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>;</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment">#if defined(__CYGWIN32__)</span></div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="comment">__declspec(dllimport) long __stdcall InterlockedIncrement(long *);</span></div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="comment">__declspec(dllimport) long __stdcall InterlockedDecrement(long *);</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="comment">__declspec(dllimport) long __stdcall InterlockedExchange(long *, long);</span></div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="comment">#define CCXX_USE_WIN32_ATOMIC 1</span></div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">#else // WIN32</span></div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span> DWORD   <a class="code" href="thread_8h.html#a3f0d0226a694bf1e508e1b1c758e6ae6">cctid_t</a>;</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keyword">typedef</span> DWORD   <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>;</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="preprocessor">#define MAX_SEM_VALUE   1000000</span></div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CCXX_USE_WIN32_ATOMIC 1</span></div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">#endif // !WIN32</span></div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">#ifdef  HAVE_GCC_CXX_BITS_ATOMIC</span></div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;ios&gt;</span></div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="preprocessor">#ifdef  CCXX_NAMESPACES</span></div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="preprocessor"></span><span class="keyword">namespace </span>ost {</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#ifdef __BORLANDC__</span></div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor"></span><span class="preprocessor"># if __BORLANDC__ &gt;= 0x0560</span></div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="preprocessor"></span><span class="keyword">using</span> std::time_t;</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="keyword">using</span> std::tm;</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="preprocessor">#ifdef  HAVE_GCC_CXX_BITS_ATOMIC</span></div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="preprocessor"></span><span class="keyword">using namespace </span>__gnu_cxx;</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="namespaceost.html#a1a3b6738f6f759fcb52b544a4787cbb2">  112</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_thread.html">Thread</a>;</div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="namespaceost.html#a1a0b31279d4e241eba24d251d1682176">  113</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_thread_key.html">ThreadKey</a>;</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">  115</a></span>&#160;<span class="preprocessor">#define TIMEOUT_INF ~((timeout_t) 0)</span></div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="thread_8h.html#a9d5589bc014dcec626ff198d5c9370cd">  117</a></span>&#160;<span class="preprocessor">#define ENTER_CRITICAL  enterMutex();</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="thread_8h.html#af1b76aeceb2370c5fcedee46f9cd3d09">  118</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LEAVE_CRITICAL  leaveMutex();</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="thread_8h.html#a61438c8055883ef92ffb09c68f70f049">  119</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ENTER_DEFERRED  setCancel(cancelDeferred);</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="thread_8h.html#ac6e53238dd0519d7c7117b2b40d4312b">  120</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LEAVE_DEFERRED  setCancel(cancelImmediate);</span></div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="preprocessor"></span><span class="comment">// These macros override common functions with thread-safe versions. In</span></div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="comment">// particular the common &quot;libc&quot; sleep() has problems since it normally</span></div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="comment">// uses SIGARLM (as actually defined by &quot;posix&quot;).  The pthread_delay and</span></div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="comment">// usleep found in libpthread are gaurenteed not to use SIGALRM and offer</span></div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="comment">// higher resolution.  psleep() is defined to call the old process sleep.</span></div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="preprocessor">#undef  sleep</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="thread_8h.html#a5e09ab8cba99b274fd420bd76f39b205">  130</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define psleep(x)   (sleep)(x)</span></div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="preprocessor">#ifdef  signal</span></div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef  signal</span></div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor">#endif // !WIN32</span></div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="preprocessor">#undef Yield</span></div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="namespaceost.html#a4528eecdfa02ab10dbfdc49f5b238506">  140</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_conditional.html">Conditional</a>;</div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="namespaceost.html#aa1f2ab8ff95e0568261375df5837eb19">  141</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_event.html">Event</a>;</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classost_1_1_mutex.html">  186</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_mutex.html">Mutex</a></div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;{</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> _debug;</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    <a class="code" href="classost_1_1_string.html">String</a> _name;</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifndef PTHREAD_MUTEXTYPE_RECURSIVE</span></div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;<span class="preprocessor"></span>    <span class="keywordtype">int</span> <span class="keyword">volatile</span> _level;</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    <a class="code" href="classost_1_1_thread.html">Thread</a> *<span class="keyword">volatile</span> _tid;</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="preprocessor"></span>    <span class="comment">/*</span></div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="comment">     * Pthread mutex object.  This is protected rather than private</span></div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="comment">     * because some mixed mode pthread operations require a mutex as</span></div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="comment">     * well as their primary pthread object.  A good example of this</span></div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="comment">     * is the Event class, as waiting on a conditional object must be</span></div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="comment">     * associated with an accessable mutex.  An alternative would be</span></div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="comment">     * to make such classes &quot;friend&quot; classes of the Mutex.</span></div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    pthread_mutex_t _mutex;</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="preprocessor">#else // WIN32</span></div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="preprocessor"># if defined(MUTEX_UNDERGROUND_WIN32_MUTEX) &amp;&amp; defined(MUTEX_UNDERGROUND_WIN32_CRITICALSECTION)</span></div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="preprocessor"></span><span class="preprocessor"># error &quot;Can&#39;t determine underground for Mutex&quot;</span></div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="preprocessor"></span><span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="preprocessor">#ifdef MUTEX_UNDERGROUND_WIN32_MUTEX</span></div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="preprocessor"></span>    <a class="code" href="serial_8h.html#a069bb8cb95b0528d5ce0304bb5561a40">HANDLE</a> _mutex;</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifdef MUTEX_UNDERGROUND_WIN32_CRITICALSECTION</span></div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="preprocessor"></span>    CRITICAL_SECTION _criticalSection;</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="preprocessor">#endif // WIN32</span></div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <a class="code" href="classost_1_1_mutex.html">Mutex</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name = NULL);</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_mutex.html">Mutex</a>();</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div>
<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classost_1_1_mutex.html#a83b66f786e344b5192a3993d319aa735">  240</a></span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_mutex.html#a83b66f786e344b5192a3993d319aa735">setDebug</a>(<span class="keywordtype">bool</span> mode)</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        {_debug = mode;};</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;</div>
<div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="classost_1_1_mutex.html#abed8b05b63f9cdd2c9ca1f92081b1a8a">  248</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_mutex.html#abed8b05b63f9cdd2c9ca1f92081b1a8a">nameMutex</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        {_name = name;};</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    <span class="keywordtype">void</span> enterMutex(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;</div>
<div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classost_1_1_mutex.html#aecb516325583e432bf2bf7e4b565f6f6">  263</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_mutex.html#aecb516325583e432bf2bf7e4b565f6f6">enter</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;        {enterMutex();};</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div>
<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classost_1_1_mutex.html#ab6aaecac9c95d31a5862014d7f1afe73">  269</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_mutex.html#ab6aaecac9c95d31a5862014d7f1afe73">leave</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        {leaveMutex();};</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div>
<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classost_1_1_mutex.html#ac1ff5454b2c9b55790c4bf33f751704c">  277</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classost_1_1_mutex.html#ac1ff5454b2c9b55790c4bf33f751704c">test</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        {<span class="keywordflow">return</span> tryEnterMutex();};</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    <span class="keywordtype">bool</span> tryEnterMutex(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    <span class="keywordtype">void</span> leaveMutex(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;};</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;</div>
<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classost_1_1_mutex_lock.html">  328</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_mutex_lock.html">MutexLock</a></div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;{</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <a class="code" href="classost_1_1_mutex.html">Mutex</a>&amp; mutex;</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="classost_1_1_mutex_lock.html#aedb21cfad9b0f1200d055fb69efa2546">  338</a></span>&#160;    <a class="code" href="classost_1_1_mutex_lock.html#aedb21cfad9b0f1200d055fb69efa2546">MutexLock</a>( <a class="code" href="classost_1_1_mutex.html">Mutex</a>&amp; _mutex ) : mutex( _mutex )</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        { mutex.enterMutex(); }</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <span class="comment">// this should be not-virtual</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classost_1_1_mutex_lock.html#a58bba3406d89b40c8bd3e9ac389b920c">  345</a></span>&#160;    <a class="code" href="classost_1_1_mutex_lock.html#a58bba3406d89b40c8bd3e9ac389b920c">~MutexLock</a>()</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;        { mutex.leaveMutex(); }</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;};</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div>
<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classost_1_1_thread_lock.html">  357</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_thread_lock.html">ThreadLock</a></div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;{</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="preprocessor">#ifdef HAVE_PTHREAD_RWLOCK</span></div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="preprocessor"></span>    pthread_rwlock_t _lock;</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="preprocessor"></span>    <a class="code" href="classost_1_1_mutex.html">Mutex</a> mutex;</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    <a class="code" href="classost_1_1_thread_lock.html">ThreadLock</a>();</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_thread_lock.html">ThreadLock</a>();</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    <span class="keywordtype">void</span> readLock(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    <span class="keywordtype">void</span> writeLock(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    <span class="keywordtype">bool</span> tryReadLock(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keywordtype">bool</span> tryWriteLock(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    <span class="keywordtype">void</span> unlock(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;};</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div>
<div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classost_1_1_read_lock.html">  427</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_read_lock.html">ReadLock</a></div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;{</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <a class="code" href="classost_1_1_thread_lock.html">ThreadLock</a>&amp; tl;</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classost_1_1_read_lock.html#a05b7c96baf6695c580871d0aaf01c149">  438</a></span>&#160;    <a class="code" href="classost_1_1_read_lock.html#a05b7c96baf6695c580871d0aaf01c149">ReadLock</a>( <a class="code" href="classost_1_1_thread_lock.html">ThreadLock</a>&amp; _tl ) : tl( _tl )</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;        { tl.readLock(); }</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    <span class="comment">// this should be not-virtual</span></div>
<div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classost_1_1_read_lock.html#a166b6a55b9fa7072be782b7eccf30a98">  444</a></span>&#160;    <a class="code" href="classost_1_1_read_lock.html#a166b6a55b9fa7072be782b7eccf30a98">~ReadLock</a>()</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;        { tl.unlock(); }</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;};</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;</div>
<div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="classost_1_1_write_lock.html">  468</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_write_lock.html">WriteLock</a></div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;{</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    <a class="code" href="classost_1_1_thread_lock.html">ThreadLock</a>&amp; tl;</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classost_1_1_write_lock.html#a93a59b1f5f09dfdaee18eca85759f86e">  479</a></span>&#160;    <a class="code" href="classost_1_1_write_lock.html#a93a59b1f5f09dfdaee18eca85759f86e">WriteLock</a>( <a class="code" href="classost_1_1_thread_lock.html">ThreadLock</a>&amp; _tl ) : tl( _tl )</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;        { tl.writeLock(); }</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;    <span class="comment">// this should be not-virtual</span></div>
<div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classost_1_1_write_lock.html#a67a6fef0c02e06cbbf6069715c38cba5">  485</a></span>&#160;    <a class="code" href="classost_1_1_write_lock.html#a67a6fef0c02e06cbbf6069715c38cba5">~WriteLock</a>()</div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;        { tl.unlock(); }</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;};</div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;</div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;</div>
<div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="classost_1_1_mutex_counter.html">  499</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_mutex_counter.html">MutexCounter</a> : <span class="keyword">public</span> <a class="code" href="classost_1_1_mutex.html">Mutex</a></div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;{</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;    <span class="keyword">volatile</span> <span class="keywordtype">int</span>    counter;</div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;</div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;    <a class="code" href="classost_1_1_mutex_counter.html">MutexCounter</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">id</span> = NULL);</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    <a class="code" href="classost_1_1_mutex_counter.html">MutexCounter</a>(<span class="keywordtype">int</span> initial, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">id</span> = NULL);</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    <span class="keyword">friend</span> <a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <span class="keywordtype">int</span> operator++(<a class="code" href="classost_1_1_mutex_counter.html">MutexCounter</a> &amp;mc);</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    <span class="keyword">friend</span> <a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <span class="keywordtype">int</span> operator--(<a class="code" href="classost_1_1_mutex_counter.html">MutexCounter</a> &amp;mc);</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;};</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;</div>
<div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="classost_1_1_atomic_counter.html">  535</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_atomic_counter.html">AtomicCounter</a></div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;{</div>
<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;<span class="preprocessor">#ifndef CCXX_USE_WIN32_ATOMIC</span></div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;<span class="preprocessor"></span><span class="keyword">private</span>:</div>
<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;<span class="preprocessor">#if defined(HAVE_ATOMIC_AIX)</span></div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;<span class="preprocessor"></span>    <span class="keyword">volatile</span> <span class="keywordtype">int</span> counter;</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;<span class="preprocessor">#elif   defined(HAVE_GCC_BITS_ATOMIC)</span></div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;<span class="preprocessor"></span>    <span class="keyword">volatile</span> _Atomic_word counter;</div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;<span class="preprocessor">#elif   defined(HAVE_GCC_CXX_BITS_ATOMIC)</span></div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;<span class="preprocessor"></span>    <span class="keyword">volatile</span> _Atomic_word counter;</div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;<span class="comment">//  __gnu_cxx::_Atomic_word counter;</span></div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;<span class="preprocessor">#elif   defined(HAVE_ATOMIC)</span></div>
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;<span class="preprocessor"></span>    atomic_t atomic;</div>
<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;<span class="preprocessor"></span>    <span class="keyword">volatile</span> <span class="keywordtype">int</span> counter;</div>
<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;    pthread_mutex_t _mutex;</div>
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;    <a class="code" href="classost_1_1_atomic_counter.html">AtomicCounter</a>();</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;</div>
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;    <a class="code" href="classost_1_1_atomic_counter.html">AtomicCounter</a>(<span class="keywordtype">int</span> value);</div>
<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;</div>
<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;    ~<a class="code" href="classost_1_1_atomic_counter.html">AtomicCounter</a>();</div>
<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;</div>
<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    <span class="keywordtype">int</span> operator++(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    <span class="keywordtype">int</span> operator--(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    <span class="keywordtype">int</span> operator+=(<span class="keywordtype">int</span> change);</div>
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;    <span class="keywordtype">int</span> operator-=(<span class="keywordtype">int</span> change);</div>
<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    <span class="keywordtype">int</span> operator+(<span class="keywordtype">int</span> change);</div>
<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;    <span class="keywordtype">int</span> operator-(<span class="keywordtype">int</span> change);</div>
<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;    <span class="keywordtype">int</span> operator=(<span class="keywordtype">int</span> value);</div>
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;    <span class="keywordtype">bool</span> operator!(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;    <span class="keyword">operator</span> int();</div>
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;<span class="preprocessor"></span><span class="keyword">private</span>:</div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;    <span class="keywordtype">long</span> atomic;</div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;</div>
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;    <span class="keyword">inline</span> <a class="code" href="classost_1_1_atomic_counter.html">AtomicCounter</a>()</div>
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        {atomic = 0;};</div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;    <span class="keyword">inline</span> <a class="code" href="classost_1_1_atomic_counter.html">AtomicCounter</a>(<span class="keywordtype">int</span> value)</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        {atomic = value;};</div>
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;</div>
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">int</span> operator++(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        {<span class="keywordflow">return</span> InterlockedIncrement(&amp;atomic);};</div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;</div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">int</span> operator--(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;        {<span class="keywordflow">return</span> InterlockedDecrement(&amp;atomic);};</div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;</div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;    <span class="keywordtype">int</span> operator+=(<span class="keywordtype">int</span> change);</div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;    <span class="keywordtype">int</span> operator-=(<span class="keywordtype">int</span> change);</div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;</div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">int</span> operator+(<span class="keywordtype">int</span> change)</div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;        {<span class="keywordflow">return</span> atomic + change;};</div>
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;</div>
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">int</span> operator-(<span class="keywordtype">int</span> change)</div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;        {<span class="keywordflow">return</span> atomic - change;};</div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">int</span> operator=(<span class="keywordtype">int</span> value)</div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;        {<span class="keywordflow">return</span> InterlockedExchange(&amp;atomic, value);};</div>
<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;</div>
<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;        {<span class="keywordflow">return</span> (atomic == 0) ? <span class="keyword">true</span> : <span class="keyword">false</span>;};</div>
<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;</div>
<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;    <span class="keyword">inline</span> <span class="keyword">operator</span> int()</div>
<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        {<span class="keywordflow">return</span> atomic;};</div>
<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;<span class="preprocessor"></span>};</div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00636"></a><span class="lineno"><a class="line" href="classost_1_1_conditional.html">  636</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_conditional.html">Conditional</a></div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;{</div>
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;    pthread_cond_t _cond;</div>
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;    pthread_mutex_t _mutex;</div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;</div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;    <a class="code" href="namespaceost.html#a4528eecdfa02ab10dbfdc49f5b238506">Conditional</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">id</span> = NULL);</div>
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;</div>
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_conditional.html">Conditional</a>();</div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;</div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;    <span class="keywordtype">void</span> signal(<span class="keywordtype">bool</span> broadcast);</div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;</div>
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="namespaceost.html#a24c7774639b3768bdd45b65a296f6369">wait</a>(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer = 0, <span class="keywordtype">bool</span> locked = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;</div>
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;    <span class="keywordtype">void</span> enterMutex(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;</div>
<div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classost_1_1_conditional.html#a2a3bf89c582dad8ba7e81370fd361668">  686</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_conditional.html#a2a3bf89c582dad8ba7e81370fd361668">lock</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;        {enterMutex();};</div>
<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;</div>
<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;    <span class="keywordtype">bool</span> tryEnterMutex(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;</div>
<div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="classost_1_1_conditional.html#a507839fac82a32f946fa5f87d41bef28">  701</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classost_1_1_conditional.html#a507839fac82a32f946fa5f87d41bef28">test</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;        {<span class="keywordflow">return</span> tryEnterMutex();};</div>
<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;</div>
<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;    <span class="keywordtype">void</span> leaveMutex(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;</div>
<div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="classost_1_1_conditional.html#a8b6126bbb6e58c1b8ef937bebf4af222">  711</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_conditional.html#a8b6126bbb6e58c1b8ef937bebf4af222">unlock</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;        {<span class="keywordflow">return</span> leaveMutex();};</div>
<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;};</div>
<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="classost_1_1_semaphore.html">  733</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_semaphore.html">Semaphore</a></div>
<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;{</div>
<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;<span class="preprocessor"></span>    <span class="keywordtype">unsigned</span> _count, _waiters;</div>
<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    pthread_mutex_t _mutex;</div>
<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;    pthread_cond_t _cond;</div>
<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;<span class="preprocessor"></span>    <a class="code" href="serial_8h.html#a069bb8cb95b0528d5ce0304bb5561a40">HANDLE</a>  semObject;</div>
<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;<span class="preprocessor">#endif // !WIN32</span></div>
<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;    <a class="code" href="classost_1_1_semaphore.html">Semaphore</a>(<span class="keywordtype">unsigned</span> resource = 0);</div>
<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;</div>
<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_semaphore.html">Semaphore</a>();</div>
<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;</div>
<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="namespaceost.html#a24c7774639b3768bdd45b65a296f6369">wait</a>(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);</div>
<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;</div>
<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;    <span class="keywordtype">void</span> post(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;</div>
<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;  <span class="keywordtype">void</span> force_unlock_after_cancellation();</div>
<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;</div>
<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;<span class="preprocessor">#endif // WIN32</span></div>
<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;    <span class="comment">// FIXME: how implement getValue for posix compatibility ?</span></div>
<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;    <span class="comment">// not portable...</span></div>
<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;<span class="preprocessor">#if 0</span></div>
<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;    <span class="keywordtype">int</span> getValue(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;<span class="preprocessor"></span>};</div>
<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;</div>
<div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="classost_1_1_semaphore_lock.html">  837</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_semaphore_lock.html">SemaphoreLock</a></div>
<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;{</div>
<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;    <a class="code" href="classost_1_1_semaphore.html">Semaphore</a>&amp; sem;</div>
<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;</div>
<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00846"></a><span class="lineno"><a class="line" href="classost_1_1_semaphore_lock.html#adb34354071ac2005870fb78926887a05">  846</a></span>&#160;    <a class="code" href="classost_1_1_semaphore_lock.html#adb34354071ac2005870fb78926887a05">SemaphoreLock</a>( <a class="code" href="classost_1_1_semaphore.html">Semaphore</a>&amp; _sem ) : sem( _sem )</div>
<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;        { sem.wait(); }</div>
<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;    <span class="comment">// this should be not-virtual</span></div>
<div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="classost_1_1_semaphore_lock.html#a59bf7e09b61fd3b900070841fae86597">  852</a></span>&#160;    <a class="code" href="classost_1_1_semaphore_lock.html#a59bf7e09b61fd3b900070841fae86597">~SemaphoreLock</a>()</div>
<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;        { sem.post(); }</div>
<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;};</div>
<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;</div>
<div class="line"><a name="l00869"></a><span class="lineno"><a class="line" href="classost_1_1_event.html">  869</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_event.html">Event</a></div>
<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;{</div>
<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;<span class="preprocessor"></span>    pthread_mutex_t _mutex;</div>
<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;    pthread_cond_t _cond;</div>
<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;    <span class="keywordtype">bool</span> _signaled;</div>
<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;    <span class="keywordtype">int</span> _count;</div>
<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;<span class="preprocessor"></span>    <a class="code" href="serial_8h.html#a069bb8cb95b0528d5ce0304bb5561a40">HANDLE</a> cond;</div>
<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;    <a class="code" href="namespaceost.html#aa1f2ab8ff95e0568261375df5837eb19">Event</a>();</div>
<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;</div>
<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_event.html">Event</a>();</div>
<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;</div>
<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;    <span class="keywordtype">void</span> reset(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;</div>
<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;    <span class="keywordtype">void</span> signal(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;</div>
<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="namespaceost.html#a24c7774639b3768bdd45b65a296f6369">wait</a>(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer);</div>
<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="namespaceost.html#a24c7774639b3768bdd45b65a296f6369">wait</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;};</div>
<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;</div>
<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;</div>
<div class="line"><a name="l01093"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html"> 1093</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_thread.html">Thread</a></div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;{</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01099"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674d"> 1099</a></span>&#160;    <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674d">Throw</a> {</div>
<div class="line"><a name="l01100"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674da1b058025329425c90f383d124ee605e5"> 1100</a></span>&#160;        <a class="code" href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674da1b058025329425c90f383d124ee605e5">throwNothing</a>,  </div>
<div class="line"><a name="l01101"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674daea5957cd08cfecf17f366352bcf9ad80"> 1101</a></span>&#160;        <a class="code" href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674daea5957cd08cfecf17f366352bcf9ad80">throwObject</a>,   </div>
<div class="line"><a name="l01102"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674da8e51a6870e65238764becffff92d7f54"> 1102</a></span>&#160;        throwException </div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;    } Throw;</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;</div>
<div class="line"><a name="l01108"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69b"> 1108</a></span>&#160;    <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69b">Cancel</a> {</div>
<div class="line"><a name="l01109"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69babbf14157c17311ec31f0967032ecb357"> 1109</a></span>&#160;        cancelInitial=0,  </div>
<div class="line"><a name="l01110"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69bab02b8cd8d899a693e8cbb86082f4ef16"> 1110</a></span>&#160;        cancelDeferred=1, </div>
<div class="line"><a name="l01111"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69ba57f820ea4f7a326c27cc504a213e167d"> 1111</a></span>&#160;        <a class="code" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69ba57f820ea4f7a326c27cc504a213e167d">cancelImmediate</a>,  </div>
<div class="line"><a name="l01112"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69bae07cc9f6d3d7333c8cce543a8bb58215"> 1112</a></span>&#160;        <a class="code" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69bae07cc9f6d3d7333c8cce543a8bb58215">cancelDisabled</a>,   </div>
<div class="line"><a name="l01113"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69baa194b63cafc5387684afe7943fe3b5f0"> 1113</a></span>&#160;        cancelManual,     </div>
<div class="line"><a name="l01115"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69badf753e6d700f194c1b8f695a9bd67554"> 1115</a></span>&#160;        cancelDefault=cancelDeferred</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;    } Cancel;</div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div>
<div class="line"><a name="l01122"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#aff7bd364ce645eac95affbf74f1a7087"> 1122</a></span>&#160;    <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="classost_1_1_thread.html#aff7bd364ce645eac95affbf74f1a7087">Suspend</a> {</div>
<div class="line"><a name="l01123"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#aff7bd364ce645eac95affbf74f1a7087a27f2f61f4bc18b64e9c25f73bb008a38"> 1123</a></span>&#160;        <a class="code" href="classost_1_1_thread.html#aff7bd364ce645eac95affbf74f1a7087a27f2f61f4bc18b64e9c25f73bb008a38">suspendEnable</a>, </div>
<div class="line"><a name="l01124"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#aff7bd364ce645eac95affbf74f1a7087a0e9f14f0e69d8c12c36a46d108a5074b"> 1124</a></span>&#160;            suspendDisable </div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;    } Suspend;</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01129"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#abc1a729c4204bc85f58c47042f429acb"> 1129</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classost_1_1_posix_thread.html">PosixThread</a>;</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01132"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a9b6e94561c96e07e8f2dd776bbc19396"> 1132</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span>DummyThread;</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01134"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#abbf97e2c58c760acb67b9db3a7ba11db"> 1134</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classost_1_1_cancellation.html">Cancellation</a>;</div>
<div class="line"><a name="l01135"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#ae156bb5074cfe5c3a729890e0ded952f"> 1135</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span>postream_type;</div>
<div class="line"><a name="l01136"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#af08013a89bf19b835ba6f75a60f870ed"> 1136</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classost_1_1_slog.html">Slog</a>;</div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;    <a class="code" href="classost_1_1_semaphore.html">Semaphore</a> joinSem;</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;    <span class="keyword">static</span> <a class="code" href="classost_1_1_thread.html">Thread</a>* _main;</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;    <a class="code" href="classost_1_1_thread.html">Thread</a> *_parent;</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;    <a class="code" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69b">Cancel</a> _cancel;</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;    <a class="code" href="classost_1_1_semaphore.html">Semaphore</a> *_start;</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;    <span class="comment">// private data</span></div>
<div class="line"><a name="l01146"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#ae3c1cdb20d70b22a5c0bf395614eefff"> 1146</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span>ThreadImpl;</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;    <span class="keyword">class </span>ThreadImpl* priv;</div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;</div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;    <span class="keyword">static</span> <a class="code" href="classost_1_1_thread.html">Thread</a> *<span class="keyword">get</span>(void);</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;<span class="preprocessor">#ifdef  WIN32</span></div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<span class="preprocessor"></span>    <span class="keyword">static</span> <span class="keywordtype">unsigned</span> __stdcall Execute(<a class="code" href="classost_1_1_thread.html">Thread</a> *th);</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;    <span class="comment">// close current thread, free all and call Notify</span></div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;    <span class="keywordtype">void</span> close();</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;    <span class="keywordtype">char</span> _name[32];</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">size_t</span> _autostack;</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;</div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;<span class="preprocessor">#ifdef WIN32</span></div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="preprocessor"></span>    DWORD waitHandle(<a class="code" href="serial_8h.html#a069bb8cb95b0528d5ce0304bb5561a40">HANDLE</a> obj, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout);</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;    <span class="keywordtype">void</span> setName(<span class="keyword">const</span> <span class="keywordtype">char</span> *text);</div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> run(<span class="keywordtype">void</span>) = 0;</div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;</div>
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <span class="keyword">final</span>(void);</div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;</div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> initial(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;</div>
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getExtended(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;</div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> notify(<a class="code" href="classost_1_1_thread.html">Thread</a>*);</div>
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;</div>
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;    <span class="keywordtype">void</span> exit(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;    <span class="keywordtype">void</span> sync(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;</div>
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;    <span class="keywordtype">bool</span> testCancel(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;</div>
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;    <span class="keywordtype">void</span> setCancel(<a class="code" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69b">Cancel</a> mode);</div>
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;</div>
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;    <span class="keywordtype">void</span> setSuspend(<a class="code" href="classost_1_1_thread.html#aff7bd364ce645eac95affbf74f1a7087">Suspend</a> mode);</div>
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;</div>
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;    <span class="keywordtype">void</span> terminate(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;</div>
<div class="line"><a name="l01295"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a5e574c2c5f388277527c9257524dd654"> 1295</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_thread.html#a5e574c2c5f388277527c9257524dd654">clrParent</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;        {_parent = NULL;};</div>
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;</div>
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;    <a class="code" href="namespaceost.html#a1a3b6738f6f759fcb52b544a4787cbb2">Thread</a>(<span class="keywordtype">bool</span> isMain);</div>
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;</div>
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;    <a class="code" href="namespaceost.html#a1a3b6738f6f759fcb52b544a4787cbb2">Thread</a>(<span class="keywordtype">int</span> pri = 0, <span class="keywordtype">size_t</span> stack = 0);</div>
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div>
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;    <a class="code" href="namespaceost.html#a1a3b6738f6f759fcb52b544a4787cbb2">Thread</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_thread.html">Thread</a> &amp;th);</div>
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_thread.html">Thread</a>();</div>
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;</div>
<div class="line"><a name="l01347"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#accd29b724539d63a8495d954f9f56c72"> 1347</a></span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_thread.html#accd29b724539d63a8495d954f9f56c72">setStack</a>(<span class="keywordtype">size_t</span> size = 0)</div>
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;        {_autostack = size;};</div>
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;</div>
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> sleep(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> msec);</div>
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;</div>
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> yield(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;</div>
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;    <span class="keywordtype">int</span> start(<a class="code" href="classost_1_1_semaphore.html">Semaphore</a> *start = 0);</div>
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;</div>
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;    <span class="keywordtype">int</span> detach(<a class="code" href="classost_1_1_semaphore.html">Semaphore</a> *start = 0);</div>
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;</div>
<div class="line"><a name="l01397"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#aac5bc230c3bad5c837baa9e6d01f4c24"> 1397</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="classost_1_1_thread.html">Thread</a> *<a class="code" href="classost_1_1_thread.html#aac5bc230c3bad5c837baa9e6d01f4c24">getParent</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;        {<span class="keywordflow">return</span> _parent;};</div>
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;</div>
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;    <span class="keywordtype">void</span> suspend(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;</div>
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;    <span class="keywordtype">void</span> resume(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;</div>
<div class="line"><a name="l01419"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a3524521d80bcc0562fb59a28ce5d62a4"> 1419</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69b">Cancel</a> <a class="code" href="classost_1_1_thread.html#a3524521d80bcc0562fb59a28ce5d62a4">getCancel</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;        {<span class="keywordflow">return</span> _cancel;};</div>
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;</div>
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;    <span class="keywordtype">bool</span> isRunning(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;</div>
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;    <span class="keywordtype">bool</span> isDetached(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;</div>
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;    <span class="keywordtype">void</span> join(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;</div>
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;    <span class="keywordtype">bool</span> isThread(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div>
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;    <a class="code" href="thread_8h.html#a3f0d0226a694bf1e508e1b1c758e6ae6">cctid_t</a> getId(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;</div>
<div class="line"><a name="l01463"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a6b578a4a82d61060d1b17109caddc1a5"> 1463</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classost_1_1_thread.html#a6b578a4a82d61060d1b17109caddc1a5">getName</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;<span class="keyword">        </span>{<span class="keywordflow">return</span> _name;};</div>
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;</div>
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;    <span class="keyword">static</span> Throw getException(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;</div>
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> setException(Throw mode);</div>
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;</div>
<div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#a2742c471d2abe8712368ccff8d534702"> 1486</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_thread.html#a2742c471d2abe8712368ccff8d534702">operator++</a>(<a class="code" href="classost_1_1_thread.html">Thread</a> &amp;th)</div>
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;        {<span class="keywordflow">if</span> (th._start) th._start-&gt;<a class="code" href="classost_1_1_semaphore.html#a7535c9c3f3c60596b21b5275342cbe1e">post</a>();};</div>
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;</div>
<div class="line"><a name="l01489"></a><span class="lineno"><a class="line" href="classost_1_1_thread.html#aa797f8e5a1ea5b857251f98f0d50614e"> 1489</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_thread.html#aa797f8e5a1ea5b857251f98f0d50614e">operator--</a>(<a class="code" href="classost_1_1_thread.html">Thread</a> &amp;th)</div>
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;        {<span class="keywordflow">if</span> (th._start) th._start-&gt;<a class="code" href="classost_1_1_semaphore.html#a1f2526be16a463d2392a74f668a91d80">wait</a>();};</div>
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;</div>
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;<span class="preprocessor">#ifdef WIN32</span></div>
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;<span class="preprocessor"></span>    <span class="keywordtype">bool</span> isCancelled() <span class="keyword">const</span>;</div>
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;</div>
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;    <span class="keyword">static</span> DWORD waitThread(<a class="code" href="serial_8h.html#a069bb8cb95b0528d5ce0304bb5561a40">HANDLE</a> hRef, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout);</div>
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;    <span class="keyword">static</span> Cancel enterCancel(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;</div>
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> exitCancel(Cancel cancel);</div>
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;};</div>
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;</div>
<div class="line"><a name="l01524"></a><span class="lineno"><a class="line" href="classost_1_1_cancellation.html"> 1524</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_cancellation.html">Cancellation</a></div>
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;{</div>
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;    <a class="code" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69b">Thread::Cancel</a> prior;</div>
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;</div>
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;    <a class="code" href="classost_1_1_cancellation.html">Cancellation</a>(<a class="code" href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69b">Thread::Cancel</a> cancel);</div>
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;    ~<a class="code" href="classost_1_1_cancellation.html">Cancellation</a>();</div>
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;};</div>
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;</div>
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;<span class="preprocessor">#if !defined(WIN32) &amp;&amp; !defined(__MINGW32__)</span></div>
<div class="line"><a name="l01535"></a><span class="lineno"><a class="line" href="namespaceost.html#a5dca865b107f598c88bd2106ea56c16e"> 1535</a></span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">int</span>     <a class="code" href="namespaceost.html#a5dca865b107f598c88bd2106ea56c16e">signo_t</a>;</div>
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;</div>
<div class="line"><a name="l01537"></a><span class="lineno"><a class="line" href="classost_1_1_posix_thread.html"> 1537</a></span>&#160;<span class="keyword">class </span><a class="code" href="classost_1_1_posix_thread.html">PosixThread</a>: <span class="keyword">public</span> <a class="code" href="classost_1_1_thread.html">Thread</a></div>
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;{</div>
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01542"></a><span class="lineno"><a class="line" href="classost_1_1_posix_thread.html#ae3c1cdb20d70b22a5c0bf395614eefff"> 1542</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span>ThreadImpl;</div>
<div class="line"><a name="l01543"></a><span class="lineno"><a class="line" href="classost_1_1_posix_thread.html#adbc148eaddd341d7ae4d07c9e9e33bfd"> 1543</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classost_1_1_thread.html">Thread</a>;</div>
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifndef CCXX_SIG_THREAD_ALARM</span></div>
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;<span class="preprocessor"></span>    <span class="keyword">static</span> <a class="code" href="classost_1_1_posix_thread.html">PosixThread</a> *_timer;</div>
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;    <span class="keyword">static</span> <a class="code" href="classost_1_1_mutex.html">Mutex</a> _arm;</div>
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;    time_t  _alarm;</div>
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> signalThread(<a class="code" href="classost_1_1_thread.html">Thread</a>* th,<a class="code" href="namespaceost.html#a5dca865b107f598c88bd2106ea56c16e">signo_t</a> signo);</div>
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;</div>
<div class="line"><a name="l01560"></a><span class="lineno"><a class="line" href="classost_1_1_posix_thread.html#a1698de2b943084fe05849cbd42099156"> 1560</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_posix_thread.html#a1698de2b943084fe05849cbd42099156">signalParent</a>(<a class="code" href="namespaceost.html#a5dca865b107f598c88bd2106ea56c16e">signo_t</a> signo)</div>
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;        { signalThread(_parent,signo); };</div>
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;</div>
<div class="line"><a name="l01569"></a><span class="lineno"><a class="line" href="classost_1_1_posix_thread.html#ad13ab707409d229be9c5b64a0e2ec7ad"> 1569</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_posix_thread.html#ad13ab707409d229be9c5b64a0e2ec7ad">signalMain</a>(<a class="code" href="namespaceost.html#a5dca865b107f598c88bd2106ea56c16e">signo_t</a> signo)</div>
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;        { signalThread(_main,signo);};</div>
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;</div>
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> onTimer(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;</div>
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> onHangup(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;</div>
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> onException(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;</div>
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> onDisconnect(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;</div>
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> onPolling(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;</div>
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> onSignal(<span class="keywordtype">int</span>);</div>
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;</div>
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;    <span class="keywordtype">void</span> setTimer(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer, <span class="keywordtype">bool</span> periodic = <span class="keyword">false</span>);</div>
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;</div>
<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;    <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> getTimer(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;</div>
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;    <span class="keywordtype">void</span> endTimer(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;</div>
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;<span class="preprocessor">#if defined(HAVE_SIGWAIT) || defined(HAVE_SIGWAIT2)</span></div>
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;    <span class="keywordtype">void</span> waitSignal(<a class="code" href="namespaceost.html#a5dca865b107f598c88bd2106ea56c16e">signo_t</a> signo);</div>
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;    <span class="keywordtype">void</span> setSignal(<span class="keywordtype">int</span> signo, <span class="keywordtype">bool</span> active);</div>
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;</div>
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;    pthread_attr_t *getPthreadAttrPtr(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;</div>
<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;    pthread_t getPthreadId(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;</div>
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;</div>
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;    <a class="code" href="classost_1_1_posix_thread.html">PosixThread</a>(<span class="keywordtype">int</span> pri = 0, <span class="keywordtype">size_t</span> stack = 0);</div>
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;</div>
<div class="line"><a name="l01680"></a><span class="lineno"><a class="line" href="classost_1_1_posix_thread.html#afa168ff1446785a43b1123703d999207"> 1680</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_posix_thread.html#afa168ff1446785a43b1123703d999207">signalThread</a>(<span class="keywordtype">int</span> signo)</div>
<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;        {signalThread(<span class="keyword">this</span>, signo);};</div>
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;</div>
<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> sigInstall(<span class="keywordtype">int</span> signo);</div>
<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;};</div>
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01707"></a><span class="lineno"><a class="line" href="classost_1_1_thread_key.html"> 1707</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_thread_key.html">ThreadKey</a></div>
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;{</div>
<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;<span class="preprocessor"></span>    pthread_key_t key;</div>
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;    <span class="keyword">typedef</span> void (*TDestruct)(<span class="keywordtype">void</span>*);</div>
<div class="line"><a name="l01713"></a><span class="lineno"><a class="line" href="classost_1_1_thread_key.html#ae3c1cdb20d70b22a5c0bf395614eefff"> 1713</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span>ThreadImpl;</div>
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;    <a class="code" href="namespaceost.html#a1a0b31279d4e241eba24d251d1682176">ThreadKey</a>(TDestruct destruct);</div>
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;<span class="preprocessor"></span>    DWORD   key;</div>
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;    <a class="code" href="namespaceost.html#a1a0b31279d4e241eba24d251d1682176">ThreadKey</a>();</div>
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;</div>
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_thread_key.html">ThreadKey</a>();</div>
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;</div>
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;    <span class="keywordtype">void</span> *getKey(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;</div>
<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;    <span class="keywordtype">void</span> setKey(<span class="keywordtype">void</span> *);</div>
<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;};</div>
<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;</div>
<div class="line"><a name="l01759"></a><span class="lineno"><a class="line" href="classost_1_1_timer_port.html"> 1759</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_timer_port.html">TimerPort</a></div>
<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;{</div>
<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;<span class="preprocessor">#ifndef WIN32</span></div>
<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;<span class="preprocessor"></span>    <span class="keyword">struct </span>timeval timer;</div>
<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;<span class="preprocessor"></span>    DWORD timer;</div>
<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;<span class="preprocessor"></span>    <span class="keywordtype">bool</span> active;</div>
<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;</div>
<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;    <a class="code" href="classost_1_1_timer_port.html">TimerPort</a>();</div>
<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;</div>
<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;    <span class="keywordtype">void</span> setTimer(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);</div>
<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;</div>
<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;    <span class="keywordtype">void</span> incTimer(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout);</div>
<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;</div>
<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;    <span class="keywordtype">void</span> decTimer(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout);</div>
<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;</div>
<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;    <span class="keywordtype">void</span> sleepTimer(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;</div>
<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;    <span class="keywordtype">void</span> endTimer(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;</div>
<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;    <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> getTimer(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;</div>
<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;    <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> getElapsed(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;};</div>
<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;</div>
<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;</div>
<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;</div>
<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;<span class="comment">// FIXME: not in win32 implementation</span></div>
<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;<span class="preprocessor">#if !defined(WIN32)</span></div>
<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;<span class="comment">// FIXME: private declaration ???</span></div>
<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;<span class="keyword">struct  </span>timespec *<a class="code" href="namespaceost.html#a8fd139f80e945ac6d8cc53868cdacca6">getTimeout</a>(<span class="keyword">struct</span> timespec *spec, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout);</div>
<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;</div>
<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;<span class="preprocessor">#if !defined(__CYGWIN32__) &amp;&amp; !defined(__MINGW32__)</span></div>
<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;<span class="preprocessor"></span><span class="keywordtype">void</span>    <a class="code" href="namespaceost.html#a24c7774639b3768bdd45b65a296f6369">wait</a>(<a class="code" href="namespaceost.html#a5dca865b107f598c88bd2106ea56c16e">signo_t</a> signo);</div>
<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;<span class="preprocessor">#endif // !WIN32</span></div>
<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;<span class="preprocessor">#ifdef USE_POLL</span></div>
<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;<span class="keyword">class </span>Poller</div>
<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;{</div>
<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;    <span class="keywordtype">int</span> nufds;</div>
<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;    pollfd *ufds;</div>
<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;</div>
<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;    Poller();</div>
<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;</div>
<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;    <span class="keyword">virtual</span> ~Poller();</div>
<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;</div>
<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;    pollfd *getList(<span class="keywordtype">int</span> cnt);</div>
<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;</div>
<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;    <span class="keyword">inline</span>  pollfd *getList(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;        {<span class="keywordflow">return</span> ufds;};</div>
<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;};</div>
<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01900"></a><span class="lineno"><a class="line" href="namespaceost.html#a99c7f7d02b00922b0f5ee62fc3bb75fd"> 1900</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classost_1_1_thread.html">Thread</a> *<a class="code" href="namespaceost.html#a99c7f7d02b00922b0f5ee62fc3bb75fd">getThread</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;    {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_thread.html#aaad41a9f7962bdc3058a429df48246fd">Thread::get</a>();}</div>
<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;</div>
<div class="line"><a name="l01932"></a><span class="lineno"><a class="line" href="classost_1_1_sys_time.html"> 1932</a></span>&#160;<span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_sys_time.html">SysTime</a></div>
<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;{</div>
<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;        <span class="keyword">static</span> <a class="code" href="classost_1_1_mutex.html">Mutex</a> timeLock;</div>
<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;</div>
<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l01938"></a><span class="lineno"><a class="line" href="classost_1_1_sys_time.html#a9c5b33e9cabc7f1510653dbd1f6eb0ae"> 1938</a></span>&#160;        <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_sys_time.html#a9c5b33e9cabc7f1510653dbd1f6eb0ae">lock</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;            {timeLock.enterMutex();}</div>
<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;</div>
<div class="line"><a name="l01941"></a><span class="lineno"><a class="line" href="classost_1_1_sys_time.html#a0d75e27d952de65d6e46b38e57ba605d"> 1941</a></span>&#160;        <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classost_1_1_sys_time.html#a0d75e27d952de65d6e46b38e57ba605d">unlock</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;            {timeLock.leaveMutex();}</div>
<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;</div>
<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;    <span class="keyword">static</span> time_t getTime(time_t *tloc = NULL);</div>
<div class="line"><a name="l01946"></a><span class="lineno"><a class="line" href="classost_1_1_sys_time.html#accb0dc3c9d64b224e47649211dbe7b64"> 1946</a></span>&#160;    <span class="keyword">static</span> time_t <a class="code" href="classost_1_1_sys_time.html#accb0dc3c9d64b224e47649211dbe7b64">time</a>(time_t *tloc)</div>
<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;            { <span class="keywordflow">return</span> getTime(tloc); };</div>
<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;</div>
<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">int</span> getTimeOfDay(<span class="keyword">struct</span> timeval *tp);</div>
<div class="line"><a name="l01950"></a><span class="lineno"><a class="line" href="classost_1_1_sys_time.html#afc403fcaa5a8ebf81528a34e5d5a1fac"> 1950</a></span>&#160;    <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classost_1_1_sys_time.html#afc403fcaa5a8ebf81528a34e5d5a1fac">gettimeofday</a>(<span class="keyword">struct</span> timeval *tp, <span class="keyword">struct</span> timezone *)</div>
<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;            { <span class="keywordflow">return</span> getTimeOfDay(tp); };</div>
<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;</div>
<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;    <span class="keyword">static</span> <span class="keyword">struct </span>tm *getLocalTime(<span class="keyword">const</span> time_t *clock, <span class="keyword">struct</span> tm *result);</div>
<div class="line"><a name="l01954"></a><span class="lineno"><a class="line" href="classost_1_1_sys_time.html#af4bd7e44705486a2f0cee2cb98b2f975"> 1954</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">struct </span>tm *<a class="code" href="classost_1_1_sys_time.html#af4bd7e44705486a2f0cee2cb98b2f975">locatime</a>(<span class="keyword">const</span> time_t *clock, <span class="keyword">struct</span> tm *result)</div>
<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;            { <span class="keywordflow">return</span> getLocalTime(clock, result); };</div>
<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;</div>
<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;        <span class="keyword">static</span> <span class="keyword">struct </span>tm *getGMTTime(<span class="keyword">const</span> time_t *clock, <span class="keyword">struct</span> tm *result);</div>
<div class="line"><a name="l01958"></a><span class="lineno"><a class="line" href="classost_1_1_sys_time.html#a1852b1563a7b8f2b96ab75bafe3948eb"> 1958</a></span>&#160;        <span class="keyword">static</span> <span class="keyword">struct </span>tm *<a class="code" href="classost_1_1_sys_time.html#a1852b1563a7b8f2b96ab75bafe3948eb">gmtime</a>(<span class="keyword">const</span> time_t *clock, <span class="keyword">struct</span> tm *result)</div>
<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;            { <span class="keywordflow">return</span> getGMTTime(clock, result);};</div>
<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;};</div>
<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;</div>
<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;<span class="preprocessor">#ifndef HAVE_LOCALTIME_R</span></div>
<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01964"></a><span class="lineno"><a class="line" href="namespaceost.html#a2532506cb80f89403523d977ef6c2345"> 1964</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">struct </span>tm *<a class="code" href="namespaceost.html#a2532506cb80f89403523d977ef6c2345">localtime_r</a>(<span class="keyword">const</span> time_t *t, <span class="keyword">struct</span> tm *b)</div>
<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;    {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_sys_time.html#ac39180f2c7b282d0145134d14a288480">SysTime::getLocalTime</a>(t, b);};</div>
<div class="line"><a name="l01966"></a><span class="lineno"><a class="line" href="namespaceost.html#a1951b0e03ecb3bf227e19855d3a1f11a"> 1966</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span> *<a class="code" href="namespaceost.html#a1951b0e03ecb3bf227e19855d3a1f11a">ctime_r</a>(<span class="keyword">const</span> time_t *t, <span class="keywordtype">char</span> *buf)</div>
<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;    {<span class="keywordflow">return</span> ctime(t);};</div>
<div class="line"><a name="l01968"></a><span class="lineno"><a class="line" href="namespaceost.html#a64c9138a1bf7a0d56fc8060fa1e4552c"> 1968</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">struct </span>tm *<a class="code" href="namespaceost.html#a64c9138a1bf7a0d56fc8060fa1e4552c">gmtime_r</a>(<span class="keyword">const</span> time_t *t, <span class="keyword">struct</span> tm *b) \</div>
<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;{<span class="keywordflow">return</span> <a class="code" href="classost_1_1_sys_time.html#a0da1e5fefac7161a878daed011e79932">SysTime::getGMTTime</a>(t, b);};</div>
<div class="line"><a name="l01970"></a><span class="lineno"><a class="line" href="namespaceost.html#a6d84108739f29b7fbc773f1a57a3a439"> 1970</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span> *<a class="code" href="namespaceost.html#a6d84108739f29b7fbc773f1a57a3a439">asctime_r</a>(<span class="keyword">const</span> <span class="keyword">struct</span> tm *tm, <span class="keywordtype">char</span> *b) \</div>
<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;    {<span class="keywordflow">return</span> asctime(tm);};</div>
<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;</div>
<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;<span class="preprocessor">#ifdef  CCXX_NAMESPACES</span></div>
<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;<span class="preprocessor"></span></div>
<div class="ttc" id="classost_1_1_mutex_html_ab6aaecac9c95d31a5862014d7f1afe73"><div class="ttname"><a href="classost_1_1_mutex.html#ab6aaecac9c95d31a5862014d7f1afe73">ost::Mutex::leave</a></div><div class="ttdeci">void leave(void)</div><div class="ttdoc">Future abi will use enter/leave/test members. </div><div class="ttdef"><b>Definition:</b> thread.h:269</div></div>
<div class="ttc" id="classost_1_1_thread_html_aff7bd364ce645eac95affbf74f1a7087"><div class="ttname"><a href="classost_1_1_thread.html#aff7bd364ce645eac95affbf74f1a7087">ost::Thread::Suspend</a></div><div class="ttdeci">Suspend</div><div class="ttdoc">How work suspend. </div><div class="ttdef"><b>Definition:</b> thread.h:1122</div></div>
<div class="ttc" id="classost_1_1_conditional_html_a507839fac82a32f946fa5f87d41bef28"><div class="ttname"><a href="classost_1_1_conditional.html#a507839fac82a32f946fa5f87d41bef28">ost::Conditional::test</a></div><div class="ttdeci">bool test(void)</div><div class="ttdef"><b>Definition:</b> thread.h:701</div></div>
<div class="ttc" id="classost_1_1_sys_time_html_a1852b1563a7b8f2b96ab75bafe3948eb"><div class="ttname"><a href="classost_1_1_sys_time.html#a1852b1563a7b8f2b96ab75bafe3948eb">ost::SysTime::gmtime</a></div><div class="ttdeci">static struct tm * gmtime(const time_t *clock, struct tm *result)</div><div class="ttdef"><b>Definition:</b> thread.h:1958</div></div>
<div class="ttc" id="classost_1_1_thread_html_a6b578a4a82d61060d1b17109caddc1a5"><div class="ttname"><a href="classost_1_1_thread.html#a6b578a4a82d61060d1b17109caddc1a5">ost::Thread::getName</a></div><div class="ttdeci">const char * getName(void) const </div><div class="ttdoc">Get the name string for this thread, to use in debug messages. </div><div class="ttdef"><b>Definition:</b> thread.h:1463</div></div>
<div class="ttc" id="classost_1_1_string_html"><div class="ttname"><a href="classost_1_1_string.html">ost::String</a></div><div class="ttdoc">This is a generic and portable string class. </div><div class="ttdef"><b>Definition:</b> string.h:77</div></div>
<div class="ttc" id="namespaceost_html_a1951b0e03ecb3bf227e19855d3a1f11a"><div class="ttname"><a href="namespaceost.html#a1951b0e03ecb3bf227e19855d3a1f11a">ost::ctime_r</a></div><div class="ttdeci">char * ctime_r(const time_t *t, char *buf)</div><div class="ttdef"><b>Definition:</b> thread.h:1966</div></div>
<div class="ttc" id="string_8h_html"><div class="ttname"><a href="string_8h.html">string.h</a></div><div class="ttdoc">Common C++ generic string class. </div></div>
<div class="ttc" id="namespaceost_html_a5dca865b107f598c88bd2106ea56c16e"><div class="ttname"><a href="namespaceost.html#a5dca865b107f598c88bd2106ea56c16e">ost::signo_t</a></div><div class="ttdeci">int signo_t</div><div class="ttdef"><b>Definition:</b> thread.h:1535</div></div>
<div class="ttc" id="serial_8h_html_a069bb8cb95b0528d5ce0304bb5561a40"><div class="ttname"><a href="serial_8h.html#a069bb8cb95b0528d5ce0304bb5561a40">HANDLE</a></div><div class="ttdeci">int HANDLE</div><div class="ttdef"><b>Definition:</b> serial.h:60</div></div>
<div class="ttc" id="namespaceost_html_a99c7f7d02b00922b0f5ee62fc3bb75fd"><div class="ttname"><a href="namespaceost.html#a99c7f7d02b00922b0f5ee62fc3bb75fd">ost::getThread</a></div><div class="ttdeci">Thread * getThread(void)</div><div class="ttdef"><b>Definition:</b> thread.h:1900</div></div>
<div class="ttc" id="namespaceost_html_a24c7774639b3768bdd45b65a296f6369"><div class="ttname"><a href="namespaceost.html#a24c7774639b3768bdd45b65a296f6369">ost::wait</a></div><div class="ttdeci">void wait(signo_t signo)</div></div>
<div class="ttc" id="namespaceost_html_aa1f2ab8ff95e0568261375df5837eb19"><div class="ttname"><a href="namespaceost.html#aa1f2ab8ff95e0568261375df5837eb19">ost::Event</a></div><div class="ttdeci">class __EXPORT Event</div><div class="ttdef"><b>Definition:</b> thread.h:141</div></div>
<div class="ttc" id="classost_1_1_write_lock_html_a67a6fef0c02e06cbbf6069715c38cba5"><div class="ttname"><a href="classost_1_1_write_lock.html#a67a6fef0c02e06cbbf6069715c38cba5">ost::WriteLock::~WriteLock</a></div><div class="ttdeci">~WriteLock()</div><div class="ttdoc">Post the semaphore automatically. </div><div class="ttdef"><b>Definition:</b> thread.h:485</div></div>
<div class="ttc" id="classost_1_1_thread_html_accd29b724539d63a8495d954f9f56c72"><div class="ttname"><a href="classost_1_1_thread.html#accd29b724539d63a8495d954f9f56c72">ost::Thread::setStack</a></div><div class="ttdeci">static void setStack(size_t size=0)</div><div class="ttdoc">Set base stack limit before manual stack sizes have effect. </div><div class="ttdef"><b>Definition:</b> thread.h:1347</div></div>
<div class="ttc" id="classost_1_1_write_lock_html_a93a59b1f5f09dfdaee18eca85759f86e"><div class="ttname"><a href="classost_1_1_write_lock.html#a93a59b1f5f09dfdaee18eca85759f86e">ost::WriteLock::WriteLock</a></div><div class="ttdeci">WriteLock(ThreadLock &amp;_tl)</div><div class="ttdoc">Wait for write access. </div><div class="ttdef"><b>Definition:</b> thread.h:479</div></div>
<div class="ttc" id="config_8h_html_ad10ef148ba8327bd530fc6c32c1e181c"><div class="ttname"><a href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a></div><div class="ttdeci">#define __EXPORT</div><div class="ttdef"><b>Definition:</b> config.h:980</div></div>
<div class="ttc" id="classost_1_1_thread_html_a24f333b09607b7c48a97e05865ada69ba57f820ea4f7a326c27cc504a213e167d"><div class="ttname"><a href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69ba57f820ea4f7a326c27cc504a213e167d">ost::Thread::cancelImmediate</a></div><div class="ttdoc">exit befor cancellation </div><div class="ttdef"><b>Definition:</b> thread.h:1111</div></div>
<div class="ttc" id="classost_1_1_mutex_html_aecb516325583e432bf2bf7e4b565f6f6"><div class="ttname"><a href="classost_1_1_mutex.html#aecb516325583e432bf2bf7e4b565f6f6">ost::Mutex::enter</a></div><div class="ttdeci">void enter(void)</div><div class="ttdoc">Future abi will use enter/leave/test members. </div><div class="ttdef"><b>Definition:</b> thread.h:263</div></div>
<div class="ttc" id="config_8h_html"><div class="ttname"><a href="config_8h.html">config.h</a></div></div>
<div class="ttc" id="classost_1_1_thread_html_a24f333b09607b7c48a97e05865ada69b"><div class="ttname"><a href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69b">ost::Thread::Cancel</a></div><div class="ttdeci">Cancel</div><div class="ttdoc">How work cancellation. </div><div class="ttdef"><b>Definition:</b> thread.h:1108</div></div>
<div class="ttc" id="classost_1_1_sys_time_html_af4bd7e44705486a2f0cee2cb98b2f975"><div class="ttname"><a href="classost_1_1_sys_time.html#af4bd7e44705486a2f0cee2cb98b2f975">ost::SysTime::locatime</a></div><div class="ttdeci">static struct tm * locatime(const time_t *clock, struct tm *result)</div><div class="ttdef"><b>Definition:</b> thread.h:1954</div></div>
<div class="ttc" id="classost_1_1_read_lock_html_a166b6a55b9fa7072be782b7eccf30a98"><div class="ttname"><a href="classost_1_1_read_lock.html#a166b6a55b9fa7072be782b7eccf30a98">ost::ReadLock::~ReadLock</a></div><div class="ttdeci">~ReadLock()</div><div class="ttdoc">Post the semaphore automatically. </div><div class="ttdef"><b>Definition:</b> thread.h:444</div></div>
<div class="ttc" id="namespaceost_html_a4528eecdfa02ab10dbfdc49f5b238506"><div class="ttname"><a href="namespaceost.html#a4528eecdfa02ab10dbfdc49f5b238506">ost::Conditional</a></div><div class="ttdeci">class __EXPORT Conditional</div><div class="ttdef"><b>Definition:</b> thread.h:140</div></div>
<div class="ttc" id="classost_1_1_sys_time_html"><div class="ttname"><a href="classost_1_1_sys_time.html">ost::SysTime</a></div><div class="ttdoc">This class is used to access non-reentrant date and time functions in the standard C library...</div><div class="ttdef"><b>Definition:</b> thread.h:1932</div></div>
<div class="ttc" id="namespaceost_html_a1a3b6738f6f759fcb52b544a4787cbb2"><div class="ttname"><a href="namespaceost.html#a1a3b6738f6f759fcb52b544a4787cbb2">ost::Thread</a></div><div class="ttdeci">class __EXPORT Thread</div><div class="ttdef"><b>Definition:</b> thread.h:112</div></div>
<div class="ttc" id="classost_1_1_sys_time_html_afc403fcaa5a8ebf81528a34e5d5a1fac"><div class="ttname"><a href="classost_1_1_sys_time.html#afc403fcaa5a8ebf81528a34e5d5a1fac">ost::SysTime::gettimeofday</a></div><div class="ttdeci">static int gettimeofday(struct timeval *tp, struct timezone *)</div><div class="ttdef"><b>Definition:</b> thread.h:1950</div></div>
<div class="ttc" id="classost_1_1_thread_html_a5e574c2c5f388277527c9257524dd654"><div class="ttname"><a href="classost_1_1_thread.html#a5e574c2c5f388277527c9257524dd654">ost::Thread::clrParent</a></div><div class="ttdeci">void clrParent(void)</div><div class="ttdoc">clear parent thread relationship. </div><div class="ttdef"><b>Definition:</b> thread.h:1295</div></div>
<div class="ttc" id="classost_1_1_sys_time_html_a0d75e27d952de65d6e46b38e57ba605d"><div class="ttname"><a href="classost_1_1_sys_time.html#a0d75e27d952de65d6e46b38e57ba605d">ost::SysTime::unlock</a></div><div class="ttdeci">static void unlock(void)</div><div class="ttdef"><b>Definition:</b> thread.h:1941</div></div>
<div class="ttc" id="classost_1_1_semaphore_html_a1f2526be16a463d2392a74f668a91d80"><div class="ttname"><a href="classost_1_1_semaphore.html#a1f2526be16a463d2392a74f668a91d80">ost::Semaphore::wait</a></div><div class="ttdeci">bool wait(timeout_t timeout=0)</div><div class="ttdoc">Wait is used to keep a thread held until the semaphore counter is greater than 0. ...</div></div>
<div class="ttc" id="classost_1_1_thread_html_aaad41a9f7962bdc3058a429df48246fd"><div class="ttname"><a href="classost_1_1_thread.html#aaad41a9f7962bdc3058a429df48246fd">ost::Thread::get</a></div><div class="ttdeci">static Thread * get(void)</div></div>
<div class="ttc" id="thread_8h_html_a3f0d0226a694bf1e508e1b1c758e6ae6"><div class="ttname"><a href="thread_8h.html#a3f0d0226a694bf1e508e1b1c758e6ae6">cctid_t</a></div><div class="ttdeci">pthread_t cctid_t</div><div class="ttdef"><b>Definition:</b> thread.h:73</div></div>
<div class="ttc" id="classost_1_1_atomic_counter_html"><div class="ttname"><a href="classost_1_1_atomic_counter.html">ost::AtomicCounter</a></div><div class="ttdoc">The AtomicCounter class offers thread-safe manipulation of an integer counter. </div><div class="ttdef"><b>Definition:</b> thread.h:535</div></div>
<div class="ttc" id="classost_1_1_conditional_html_a2a3bf89c582dad8ba7e81370fd361668"><div class="ttname"><a href="classost_1_1_conditional.html#a2a3bf89c582dad8ba7e81370fd361668">ost::Conditional::lock</a></div><div class="ttdeci">void lock(void)</div><div class="ttdoc">In the future we will use lock in place of enterMutex since the conditional composite is not a recurs...</div><div class="ttdef"><b>Definition:</b> thread.h:686</div></div>
<div class="ttc" id="classost_1_1_thread_html_ab9538e839c06104af2974b77d2a5674da1b058025329425c90f383d124ee605e5"><div class="ttname"><a href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674da1b058025329425c90f383d124ee605e5">ost::Thread::throwNothing</a></div><div class="ttdoc">continue without throwing error </div><div class="ttdef"><b>Definition:</b> thread.h:1100</div></div>
<div class="ttc" id="thread_8h_html_af412159e5cef839836a5e7b19ee75d1c"><div class="ttname"><a href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a></div><div class="ttdeci">unsigned long timeout_t</div><div class="ttdef"><b>Definition:</b> thread.h:74</div></div>
<div class="ttc" id="classost_1_1_event_html"><div class="ttname"><a href="classost_1_1_event.html">ost::Event</a></div><div class="ttdoc">The Event class implements a feature originally found in the WIN32 API; event notification. </div><div class="ttdef"><b>Definition:</b> thread.h:869</div></div>
<div class="ttc" id="classost_1_1_read_lock_html_a05b7c96baf6695c580871d0aaf01c149"><div class="ttname"><a href="classost_1_1_read_lock.html#a05b7c96baf6695c580871d0aaf01c149">ost::ReadLock::ReadLock</a></div><div class="ttdeci">ReadLock(ThreadLock &amp;_tl)</div><div class="ttdoc">Wait for read access. </div><div class="ttdef"><b>Definition:</b> thread.h:438</div></div>
<div class="ttc" id="classost_1_1_mutex_lock_html"><div class="ttname"><a href="classost_1_1_mutex_lock.html">ost::MutexLock</a></div><div class="ttdoc">The MutexLock class is used to protect a section of code so that at any given time only a single thre...</div><div class="ttdef"><b>Definition:</b> thread.h:328</div></div>
<div class="ttc" id="classost_1_1_semaphore_lock_html_a59bf7e09b61fd3b900070841fae86597"><div class="ttname"><a href="classost_1_1_semaphore_lock.html#a59bf7e09b61fd3b900070841fae86597">ost::SemaphoreLock::~SemaphoreLock</a></div><div class="ttdeci">~SemaphoreLock()</div><div class="ttdoc">Post the semaphore automatically. </div><div class="ttdef"><b>Definition:</b> thread.h:852</div></div>
<div class="ttc" id="namespaceost_html_a2532506cb80f89403523d977ef6c2345"><div class="ttname"><a href="namespaceost.html#a2532506cb80f89403523d977ef6c2345">ost::localtime_r</a></div><div class="ttdeci">struct tm * localtime_r(const time_t *t, struct tm *b)</div><div class="ttdef"><b>Definition:</b> thread.h:1964</div></div>
<div class="ttc" id="classost_1_1_thread_html_aa797f8e5a1ea5b857251f98f0d50614e"><div class="ttname"><a href="classost_1_1_thread.html#aa797f8e5a1ea5b857251f98f0d50614e">ost::Thread::operator--</a></div><div class="ttdeci">friend void operator--(Thread &amp;th)</div><div class="ttdef"><b>Definition:</b> thread.h:1489</div></div>
<div class="ttc" id="classost_1_1_cancellation_html"><div class="ttname"><a href="classost_1_1_cancellation.html">ost::Cancellation</a></div><div class="ttdoc">A class to automatically set the thread cancellation mode of a member function. </div><div class="ttdef"><b>Definition:</b> thread.h:1524</div></div>
<div class="ttc" id="classost_1_1_semaphore_html_a7535c9c3f3c60596b21b5275342cbe1e"><div class="ttname"><a href="classost_1_1_semaphore.html#a7535c9c3f3c60596b21b5275342cbe1e">ost::Semaphore::post</a></div><div class="ttdeci">void post(void)</div><div class="ttdoc">Posting to a semaphore increments its current value and releases the first thread waiting for the sem...</div></div>
<div class="ttc" id="classost_1_1_conditional_html_a8b6126bbb6e58c1b8ef937bebf4af222"><div class="ttname"><a href="classost_1_1_conditional.html#a8b6126bbb6e58c1b8ef937bebf4af222">ost::Conditional::unlock</a></div><div class="ttdeci">void unlock(void)</div><div class="ttdef"><b>Definition:</b> thread.h:711</div></div>
<div class="ttc" id="classost_1_1_thread_html_ab9538e839c06104af2974b77d2a5674daea5957cd08cfecf17f366352bcf9ad80"><div class="ttname"><a href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674daea5957cd08cfecf17f366352bcf9ad80">ost::Thread::throwObject</a></div><div class="ttdoc">throw object that cause error (throw this) </div><div class="ttdef"><b>Definition:</b> thread.h:1101</div></div>
<div class="ttc" id="classost_1_1_slog_html"><div class="ttname"><a href="classost_1_1_slog.html">ost::Slog</a></div><div class="ttdoc">The slog class is used to stream messages to the system&amp;#39;s logging facility (syslogd). </div><div class="ttdef"><b>Definition:</b> slog.h:104</div></div>
<div class="ttc" id="classost_1_1_timer_port_html"><div class="ttname"><a href="classost_1_1_timer_port.html">ost::TimerPort</a></div><div class="ttdoc">Timer ports are used to provide synchronized timing events when managed under a &amp;quot;service thread&amp;quot; such...</div><div class="ttdef"><b>Definition:</b> thread.h:1759</div></div>
<div class="ttc" id="namespaceost_html_a1a0b31279d4e241eba24d251d1682176"><div class="ttname"><a href="namespaceost.html#a1a0b31279d4e241eba24d251d1682176">ost::ThreadKey</a></div><div class="ttdeci">class __EXPORT ThreadKey</div><div class="ttdef"><b>Definition:</b> thread.h:113</div></div>
<div class="ttc" id="classost_1_1_posix_thread_html_a1698de2b943084fe05849cbd42099156"><div class="ttname"><a href="classost_1_1_posix_thread.html#a1698de2b943084fe05849cbd42099156">ost::PosixThread::signalParent</a></div><div class="ttdeci">void signalParent(signo_t signo)</div><div class="ttdoc">In the Posix version of Common C++, this can be used to send a signal into the parent thread of the c...</div><div class="ttdef"><b>Definition:</b> thread.h:1560</div></div>
<div class="ttc" id="classost_1_1_mutex_lock_html_a58bba3406d89b40c8bd3e9ac389b920c"><div class="ttname"><a href="classost_1_1_mutex_lock.html#a58bba3406d89b40c8bd3e9ac389b920c">ost::MutexLock::~MutexLock</a></div><div class="ttdeci">~MutexLock()</div><div class="ttdoc">Release the mutex automatically. </div><div class="ttdef"><b>Definition:</b> thread.h:345</div></div>
<div class="ttc" id="classost_1_1_mutex_lock_html_aedb21cfad9b0f1200d055fb69efa2546"><div class="ttname"><a href="classost_1_1_mutex_lock.html#aedb21cfad9b0f1200d055fb69efa2546">ost::MutexLock::MutexLock</a></div><div class="ttdeci">MutexLock(Mutex &amp;_mutex)</div><div class="ttdoc">Acquire the mutex. </div><div class="ttdef"><b>Definition:</b> thread.h:338</div></div>
<div class="ttc" id="classost_1_1_conditional_html"><div class="ttname"><a href="classost_1_1_conditional.html">ost::Conditional</a></div><div class="ttdoc">A conditional variable synchcronization object for one to one and one to many signal and control even...</div><div class="ttdef"><b>Definition:</b> thread.h:636</div></div>
<div class="ttc" id="classost_1_1_mutex_html_ac1ff5454b2c9b55790c4bf33f751704c"><div class="ttname"><a href="classost_1_1_mutex.html#ac1ff5454b2c9b55790c4bf33f751704c">ost::Mutex::test</a></div><div class="ttdeci">bool test(void)</div><div class="ttdoc">Future abi will use enter/leave/test members. </div><div class="ttdef"><b>Definition:</b> thread.h:277</div></div>
<div class="ttc" id="classost_1_1_sys_time_html_accb0dc3c9d64b224e47649211dbe7b64"><div class="ttname"><a href="classost_1_1_sys_time.html#accb0dc3c9d64b224e47649211dbe7b64">ost::SysTime::time</a></div><div class="ttdeci">static time_t time(time_t *tloc)</div><div class="ttdef"><b>Definition:</b> thread.h:1946</div></div>
<div class="ttc" id="classost_1_1_thread_html_aac5bc230c3bad5c837baa9e6d01f4c24"><div class="ttname"><a href="classost_1_1_thread.html#aac5bc230c3bad5c837baa9e6d01f4c24">ost::Thread::getParent</a></div><div class="ttdeci">Thread * getParent(void)</div><div class="ttdoc">Gets the pointer to the Thread class which created the current thread object. </div><div class="ttdef"><b>Definition:</b> thread.h:1397</div></div>
<div class="ttc" id="classost_1_1_thread_html_aff7bd364ce645eac95affbf74f1a7087a27f2f61f4bc18b64e9c25f73bb008a38"><div class="ttname"><a href="classost_1_1_thread.html#aff7bd364ce645eac95affbf74f1a7087a27f2f61f4bc18b64e9c25f73bb008a38">ost::Thread::suspendEnable</a></div><div class="ttdoc">suspend enabled </div><div class="ttdef"><b>Definition:</b> thread.h:1123</div></div>
<div class="ttc" id="classost_1_1_sys_time_html_a9c5b33e9cabc7f1510653dbd1f6eb0ae"><div class="ttname"><a href="classost_1_1_sys_time.html#a9c5b33e9cabc7f1510653dbd1f6eb0ae">ost::SysTime::lock</a></div><div class="ttdeci">static void lock(void)</div><div class="ttdef"><b>Definition:</b> thread.h:1938</div></div>
<div class="ttc" id="classost_1_1_mutex_html_a83b66f786e344b5192a3993d319aa735"><div class="ttname"><a href="classost_1_1_mutex.html#a83b66f786e344b5192a3993d319aa735">ost::Mutex::setDebug</a></div><div class="ttdeci">static void setDebug(bool mode)</div><div class="ttdoc">Enable or disable deadlock debugging. </div><div class="ttdef"><b>Definition:</b> thread.h:240</div></div>
<div class="ttc" id="classost_1_1_thread_html_ab9538e839c06104af2974b77d2a5674d"><div class="ttname"><a href="classost_1_1_thread.html#ab9538e839c06104af2974b77d2a5674d">ost::Thread::Throw</a></div><div class="ttdeci">Throw</div><div class="ttdoc">How to raise error. </div><div class="ttdef"><b>Definition:</b> thread.h:1099</div></div>
<div class="ttc" id="classost_1_1_thread_key_html"><div class="ttname"><a href="classost_1_1_thread_key.html">ost::ThreadKey</a></div><div class="ttdoc">This class allows the creation of a thread context unique &amp;quot;pointer&amp;quot; that can be set and retrieved and...</div><div class="ttdef"><b>Definition:</b> thread.h:1707</div></div>
<div class="ttc" id="classost_1_1_mutex_html"><div class="ttname"><a href="classost_1_1_mutex.html">ost::Mutex</a></div><div class="ttdoc">The Mutex class is used to protect a section of code so that at any given time only a single thread c...</div><div class="ttdef"><b>Definition:</b> thread.h:186</div></div>
<div class="ttc" id="classost_1_1_thread_html"><div class="ttname"><a href="classost_1_1_thread.html">ost::Thread</a></div><div class="ttdoc">Every thread of execution in an application is created by instantiating an object of a class derived ...</div><div class="ttdef"><b>Definition:</b> thread.h:1093</div></div>
<div class="ttc" id="classost_1_1_read_lock_html"><div class="ttname"><a href="classost_1_1_read_lock.html">ost::ReadLock</a></div><div class="ttdoc">The ReadLock class is used to protect a section of code through a ThreadLock for &amp;quot;read&amp;quot; access to the...</div><div class="ttdef"><b>Definition:</b> thread.h:427</div></div>
<div class="ttc" id="classost_1_1_posix_thread_html"><div class="ttname"><a href="classost_1_1_posix_thread.html">ost::PosixThread</a></div><div class="ttdef"><b>Definition:</b> thread.h:1537</div></div>
<div class="ttc" id="classost_1_1_semaphore_lock_html"><div class="ttname"><a href="classost_1_1_semaphore_lock.html">ost::SemaphoreLock</a></div><div class="ttdoc">The SemaphoreLock class is used to protect a section of code through a semaphore so that only x insta...</div><div class="ttdef"><b>Definition:</b> thread.h:837</div></div>
<div class="ttc" id="classost_1_1_mutex_html_abed8b05b63f9cdd2c9ca1f92081b1a8a"><div class="ttname"><a href="classost_1_1_mutex.html#abed8b05b63f9cdd2c9ca1f92081b1a8a">ost::Mutex::nameMutex</a></div><div class="ttdeci">void nameMutex(const char *name)</div><div class="ttdoc">Enable setting of mutex name for deadlock debug. </div><div class="ttdef"><b>Definition:</b> thread.h:248</div></div>
<div class="ttc" id="namespaceost_html_a64c9138a1bf7a0d56fc8060fa1e4552c"><div class="ttname"><a href="namespaceost.html#a64c9138a1bf7a0d56fc8060fa1e4552c">ost::gmtime_r</a></div><div class="ttdeci">struct tm * gmtime_r(const time_t *t, struct tm *b)</div><div class="ttdef"><b>Definition:</b> thread.h:1968</div></div>
<div class="ttc" id="namespaceost_html_a8fd139f80e945ac6d8cc53868cdacca6"><div class="ttname"><a href="namespaceost.html#a8fd139f80e945ac6d8cc53868cdacca6">ost::getTimeout</a></div><div class="ttdeci">struct timespec * getTimeout(struct timespec *spec, timeout_t timeout)</div></div>
<div class="ttc" id="classost_1_1_sys_time_html_a0da1e5fefac7161a878daed011e79932"><div class="ttname"><a href="classost_1_1_sys_time.html#a0da1e5fefac7161a878daed011e79932">ost::SysTime::getGMTTime</a></div><div class="ttdeci">static struct tm * getGMTTime(const time_t *clock, struct tm *result)</div></div>
<div class="ttc" id="classost_1_1_mutex_counter_html"><div class="ttname"><a href="classost_1_1_mutex_counter.html">ost::MutexCounter</a></div><div class="ttdoc">The Mutex Counter is a counter variable which can safely be incremented or decremented by multiple th...</div><div class="ttdef"><b>Definition:</b> thread.h:499</div></div>
<div class="ttc" id="classost_1_1_posix_thread_html_ad13ab707409d229be9c5b64a0e2ec7ad"><div class="ttname"><a href="classost_1_1_posix_thread.html#ad13ab707409d229be9c5b64a0e2ec7ad">ost::PosixThread::signalMain</a></div><div class="ttdeci">void signalMain(signo_t signo)</div><div class="ttdoc">In the Posix version of Common C++, this can be used to send a signal into the main application threa...</div><div class="ttdef"><b>Definition:</b> thread.h:1569</div></div>
<div class="ttc" id="classost_1_1_thread_html_a24f333b09607b7c48a97e05865ada69bae07cc9f6d3d7333c8cce543a8bb58215"><div class="ttname"><a href="classost_1_1_thread.html#a24f333b09607b7c48a97e05865ada69bae07cc9f6d3d7333c8cce543a8bb58215">ost::Thread::cancelDisabled</a></div><div class="ttdoc">ignore cancellation </div><div class="ttdef"><b>Definition:</b> thread.h:1112</div></div>
<div class="ttc" id="classost_1_1_thread_html_a3524521d80bcc0562fb59a28ce5d62a4"><div class="ttname"><a href="classost_1_1_thread.html#a3524521d80bcc0562fb59a28ce5d62a4">ost::Thread::getCancel</a></div><div class="ttdeci">Cancel getCancel(void)</div><div class="ttdoc">Used to retrieve the cancellation mode in effect for the selected thread. </div><div class="ttdef"><b>Definition:</b> thread.h:1419</div></div>
<div class="ttc" id="classost_1_1_sys_time_html_ac39180f2c7b282d0145134d14a288480"><div class="ttname"><a href="classost_1_1_sys_time.html#ac39180f2c7b282d0145134d14a288480">ost::SysTime::getLocalTime</a></div><div class="ttdeci">static struct tm * getLocalTime(const time_t *clock, struct tm *result)</div></div>
<div class="ttc" id="classost_1_1_thread_lock_html"><div class="ttname"><a href="classost_1_1_thread_lock.html">ost::ThreadLock</a></div><div class="ttdoc">The ThreadLock class impliments a thread rwlock for optimal reader performance on systems which have ...</div><div class="ttdef"><b>Definition:</b> thread.h:357</div></div>
<div class="ttc" id="namespaceost_html_a6d84108739f29b7fbc773f1a57a3a439"><div class="ttname"><a href="namespaceost.html#a6d84108739f29b7fbc773f1a57a3a439">ost::asctime_r</a></div><div class="ttdeci">char * asctime_r(const struct tm *tm, char *b)</div><div class="ttdef"><b>Definition:</b> thread.h:1970</div></div>
<div class="ttc" id="classost_1_1_posix_thread_html_afa168ff1446785a43b1123703d999207"><div class="ttname"><a href="classost_1_1_posix_thread.html#afa168ff1446785a43b1123703d999207">ost::PosixThread::signalThread</a></div><div class="ttdeci">void signalThread(int signo)</div><div class="ttdoc">Delivers a Posix signal to the current thread. </div><div class="ttdef"><b>Definition:</b> thread.h:1680</div></div>
<div class="ttc" id="classost_1_1_write_lock_html"><div class="ttname"><a href="classost_1_1_write_lock.html">ost::WriteLock</a></div><div class="ttdoc">The WriteLock class is used to protect a section of code through a ThreadLock for &amp;quot;write&amp;quot; access to t...</div><div class="ttdef"><b>Definition:</b> thread.h:468</div></div>
<div class="ttc" id="classost_1_1_semaphore_html"><div class="ttname"><a href="classost_1_1_semaphore.html">ost::Semaphore</a></div><div class="ttdoc">A semaphore is generally used as a synchronization object between multiple threads or to protect a li...</div><div class="ttdef"><b>Definition:</b> thread.h:733</div></div>
<div class="ttc" id="classost_1_1_semaphore_lock_html_adb34354071ac2005870fb78926887a05"><div class="ttname"><a href="classost_1_1_semaphore_lock.html#adb34354071ac2005870fb78926887a05">ost::SemaphoreLock::SemaphoreLock</a></div><div class="ttdeci">SemaphoreLock(Semaphore &amp;_sem)</div><div class="ttdoc">Wait for the semaphore. </div><div class="ttdef"><b>Definition:</b> thread.h:846</div></div>
<div class="ttc" id="classost_1_1_thread_html_a2742c471d2abe8712368ccff8d534702"><div class="ttname"><a href="classost_1_1_thread.html#a2742c471d2abe8712368ccff8d534702">ost::Thread::operator++</a></div><div class="ttdeci">friend void operator++(Thread &amp;th)</div><div class="ttdoc">Signal the semaphore that the specified thread is waiting for before beginning execution. </div><div class="ttdef"><b>Definition:</b> thread.h:1486</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 17 2013 23:24:57 for GNU CommonC++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>