📄 critsec_8h-source.html
字号:
00101 00103 00104 <span class="keyword">private</span>:00105 <a class="code" href="classPCriticalSection.html">PCriticalSection</a> & operator=(<span class="keyword">const</span> <a class="code" href="classPCriticalSection.html">PCriticalSection</a> &) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }00106 00107 <span class="comment">// Include platform dependent part of class</span>00108 <span class="preprocessor">#ifdef _WIN32</span>00109 <span class="preprocessor"></span><span class="preprocessor">#include "msos/ptlib/critsec.h"</span>00110 <span class="preprocessor">#else</span>00111 <span class="preprocessor"></span><span class="preprocessor">#include "unix/ptlib/critsec.h"</span>00112 <span class="preprocessor">#endif</span>00113 <span class="preprocessor"></span>};00114 00115 00116 <span class="keyword">class </span><a class="code" href="classPEnterAndLeave.html">PEnterAndLeave</a> {00117 <span class="keyword">public</span>:00122 <span class="keyword">inline</span> <a class="code" href="classPEnterAndLeave.html#a0">PEnterAndLeave</a>(00123 <a class="code" href="classPCriticalSection.html">PCriticalSection</a> & _critSec, 00124 BOOL enter = TRUE 00125 )00126 : <a class="code" href="classPEnterAndLeave.html#n0">critSec</a>(_critSec)00127 { <span class="keywordflow">if</span> (enter) <a class="code" href="classPEnterAndLeave.html#n0">critSec</a>.<a class="code" href="classPCriticalSection.html#z79_0">Enter</a>(); }00128 00133 <span class="keyword">inline</span> <a class="code" href="classPEnterAndLeave.html#a1">~PEnterAndLeave</a>()00134 { <a class="code" href="classPEnterAndLeave.html#n0">critSec</a>.<a class="code" href="classPCriticalSection.html#z79_1">Leave</a>(); }00135 00136 <span class="keyword">protected</span>:00137 <a class="code" href="classPCriticalSection.html">PCriticalSection</a> & <a class="code" href="classPEnterAndLeave.html#n0">critSec</a>;00138 };00139 00140 00149 <span class="keyword">class </span><a class="code" href="classPAtomicInteger.html">PAtomicInteger</a> 00150 {00151 <span class="preprocessor">#if defined(_WIN32) || defined(DOC_PLUS_PLUS)</span>00152 <span class="preprocessor"></span> <span class="keyword">public</span>:00155 <span class="keyword">inline</span> <a class="code" href="classPAtomicInteger.html#a0">PAtomicInteger</a>(<span class="keywordtype">long</span> v = 0)00156 : <a class="code" href="classPAtomicInteger.html#n0">value</a>(v) { }00157 <a name="l00165"></a><a class="code" href="classPEnterAndLeave.html#a0">00165</a> BOOL <a class="code" href="classPAtomicInteger.html#a1">IsZero</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPAtomicInteger.html#n0">value</a> == 0; }00166 00172 <span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classPAtomicInteger.html#a2">operator++</a>() { <span class="keywordflow">return</span> InterlockedIncrement(&<a class="code" href="classPAtomicInteger.html#n0">value</a>); }00173 00179 <span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classPAtomicInteger.html#a3">operator--</a>() { <span class="keywordflow">return</span> InterlockedDecrement(&<a class="code" href="classPAtomicInteger.html#n0">value</a>); }<a name="l00180"></a><a class="code" href="classPEnterAndLeave.html#n0">00180</a> 00184 <span class="keyword">inline</span> <a class="code" href="classPAtomicInteger.html#a4">operator long </a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPAtomicInteger.html#n0">value</a>; }00185 00189 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classPAtomicInteger.html#a5">SetValue</a>(<span class="keywordtype">long</span> v) { <a class="code" href="classPAtomicInteger.html#n0">value</a> = v; }00190 <span class="keyword">protected</span>:00191 <span class="keywordtype">long</span> <a class="code" href="classPAtomicInteger.html#n0">value</a>;<a name="l00192"></a><a class="code" href="classPAtomicInteger.html">00192</a> <span class="preprocessor">#elif P_HAS_ATOMIC_INT</span>00193 <span class="preprocessor"></span> <span class="keyword">public</span>:00194 <span class="keyword">inline</span> <a class="code" href="classPAtomicInteger.html#a0">PAtomicInteger</a>(<span class="keywordtype">int</span> v = 0)00195 : <a class="code" href="classPAtomicInteger.html#n0">value</a>(v) { }00196 BOOL <a class="code" href="classPAtomicInteger.html#a1">IsZero</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPAtomicInteger.html#n0">value</a> == 0; }00197 <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classPAtomicInteger.html#a2">operator++</a>() { <span class="keywordflow">return</span> EXCHANGE_AND_ADD(&<a class="code" href="classPAtomicInteger.html#n0">value</a>, 1) + 1; }<a name="l00198"></a><a class="code" href="classPAtomicInteger.html#a0">00198</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <span class="keywordtype">unsigned</span> <a class="code" href="classPAtomicInteger.html#a3">operator--</a>() { <span class="keywordflow">return</span> EXCHANGE_AND_ADD(&<a class="code" href="classPAtomicInteger.html#n0">value</a>, -1) - 1; }00199 <span class="keyword">inline</span> operator int ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPAtomicInteger.html#n0">value</a>; }00200 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classPAtomicInteger.html#a5">SetValue</a>(<span class="keywordtype">int</span> v) { <a class="code" href="classPAtomicInteger.html#n0">value</a> = v; }00201 <span class="keyword">protected</span>:00202 _Atomic_word <a class="code" href="classPAtomicInteger.html#n0">value</a>;00203 <span class="preprocessor">#else </span>00204 <span class="preprocessor"></span> <span class="keyword">protected</span>:00205 <a class="code" href="classPCriticalSection.html">PCriticalSection</a> critSec;00206 <span class="keyword">public</span>:00207 <span class="keyword">inline</span> <a class="code" href="classPAtomicInteger.html#a0">PAtomicInteger</a>(<span class="keywordtype">int</span> v = 0)<a name="l00208"></a><a class="code" href="classPAtomicInteger.html#a1">00208</a> : <a class="code" href="classPAtomicInteger.html#n0">value</a>(v) { }00209 BOOL <a class="code" href="classPAtomicInteger.html#a1">IsZero</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPAtomicInteger.html#n0">value</a> == 0; }00210 <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classPAtomicInteger.html#a2">operator++</a>() { <a class="code" href="classPEnterAndLeave.html">PEnterAndLeave</a> m(critSec); <a class="code" href="classPAtomicInteger.html#n0">value</a>++; <span class="keywordflow">return</span> <a class="code" href="classPAtomicInteger.html#n0">value</a>;}00211 <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classPAtomicInteger.html#a3">operator--</a>() { <a class="code" href="classPEnterAndLeave.html">PEnterAndLeave</a> m(critSec); <a class="code" href="classPAtomicInteger.html#n0">value</a>--; <span class="keywordflow">return</span> <a class="code" href="classPAtomicInteger.html#n0">value</a>;}00212 <span class="keyword">inline</span> operator int ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPAtomicInteger.html#n0">value</a>; }00213 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classPAtomicInteger.html#a5">SetValue</a>(<span class="keywordtype">int</span> v) { <a class="code" href="classPAtomicInteger.html#n0">value</a> = v; }00214 <span class="keyword">private</span>:<a name="l00215"></a><a class="code" href="classPAtomicInteger.html#a2">00215</a> <a class="code" href="classPAtomicInteger.html">PAtomicInteger</a> & operator=(<span class="keyword">const</span> <a class="code" href="classPAtomicInteger.html">PAtomicInteger</a> & ref) { <a class="code" href="classPAtomicInteger.html#n0">value</a> = (int)ref; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }00216 <span class="keyword">protected</span>:00217 <span class="keywordtype">int</span> <a class="code" href="classPAtomicInteger.html#n0">value</a>;00218 <span class="preprocessor">#endif</span>00219 <span class="preprocessor"></span>};00220 00221 <span class="preprocessor">#endif</span><a name="l00222"></a><a class="code" href="classPAtomicInteger.html#a3">00222</a> <span class="preprocessor"></span>00223 <span class="comment">// End Of File ///////////////////////////////////////////////////////////////</span></pre></div><hr><address style="align: right;"><small>Generated on Wed Sep 29 22:44:10 2004 for PWLib by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.18 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -