⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 critsec_8h-source.html

📁 pwlib开发文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00101 00103 00104   <span class="keyword">private</span>:00105     <a class="code" href="classPCriticalSection.html">PCriticalSection</a> &amp; operator=(<span class="keyword">const</span> <a class="code" href="classPCriticalSection.html">PCriticalSection</a> &amp;) { <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> &amp; _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> &amp; <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(&amp;<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(&amp;<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(&amp;<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(&amp;<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> &amp; operator=(<span class="keyword">const</span> <a class="code" href="classPAtomicInteger.html">PAtomicInteger</a> &amp; 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 + -