📄 thread_8h-source.html
字号:
00150 <span class="preprocessor"></span>00151 <span class="keyword">class </span><a class="code" href="classPSemaphore.html">PSemaphore</a>;00152 <a name="l00153"></a><a class="code" href="thread_8h.html#a0">00153</a> <span class="preprocessor">#define PThreadIdentifer PThreadIdentifier</span>00154 <span class="preprocessor"></span><a name="l00155"></a><a class="code" href="thread_8h.html#a1">00155</a> <span class="keyword">typedef</span> P_THREADIDENTIFIER <a class="code" href="thread_8h.html#a1">PThreadIdentifier</a>;00156 00158 <span class="comment">// PThread</span>00159 <a name="l00173"></a><a class="code" href="classPThread.html">00173</a> <span class="keyword">class </span><a class="code" href="classPThread.html">PThread</a> : <span class="keyword">public</span> <a class="code" href="classPObject.html">PObject</a>00174 {00175 <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(<a class="code" href="classPThread.html">PThread</a>, <a class="code" href="classPObject.html">PObject</a>);00176 00177 <span class="keyword">public</span>:00180 <a name="l00181"></a><a class="code" href="classPThread.html#z437_0">00181</a> <span class="keyword">enum</span> <a class="code" href="classPThread.html#z437_0">Priority</a> {00183 <a class="code" href="classPThread.html#z437_0s0">LowestPriority</a>, 00184 00186 <a class="code" href="classPThread.html#z437_0s1">LowPriority</a>, 00187 00189 <a class="code" href="classPThread.html#z437_0s2">NormalPriority</a>, 00190 00192 <a class="code" href="classPThread.html#z437_0s3">HighPriority</a>, 00193 00195 <a class="code" href="classPThread.html#z437_0s4">HighestPriority</a>, 00196 00197 <a class="code" href="classPThread.html#z437_0s5">NumPriorities</a>00198 };00199 <a name="l00201"></a><a class="code" href="classPThread.html#z437_1">00201</a> <span class="keyword">enum</span> <a class="code" href="classPThread.html#z437_1">AutoDeleteFlag</a> {00203 <a class="code" href="classPThread.html#z437_1s6">AutoDeleteThread</a>, 00204 00206 <a class="code" href="classPThread.html#z437_1s7">NoAutoDeleteThread</a> 00207 };00208 00231 <a class="code" href="classPThread.html#z437_2">PThread</a>(00232 PINDEX , 00233 <a class="code" href="classPThread.html#z437_1">AutoDeleteFlag</a> deletion = <a class="code" href="classPThread.html#z437_1s6">AutoDeleteThread</a>,00235 <a class="code" href="classPThread.html#z437_0">Priority</a> priorityLevel = <a class="code" href="classPThread.html#z437_0s2">NormalPriority</a>, 00236 <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & threadName = <a class="code" href="classPString.html#z231_33">PString::Empty</a>() 00237 );00238 00246 <a class="code" href="classPThread.html#z437_3">~PThread</a>();00248 00255 <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z439_0">PrintOn</a>(00256 ostream & strm 00257 ) <span class="keyword">const</span>;00259 00267 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_0">Restart</a>();00268 00280 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_1">Terminate</a>();00281 00287 <span class="keyword">virtual</span> BOOL <a class="code" href="classPThread.html#z441_2">IsTerminated</a>() <span class="keyword">const</span>;00288 00294 <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_3">WaitForTermination</a>() <span class="keyword">const</span>;00295 BOOL <a class="code" href="classPThread.html#z441_3">WaitForTermination</a>(00296 <span class="keyword">const</span> <a class="code" href="classPTimeInterval.html">PTimeInterval</a> & maxWait 00297 ) <span class="keyword">const</span>;00298 00311 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_5">Suspend</a>(00312 BOOL susp = TRUE 00313 );00314 00318 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_6">Resume</a>();00319 00327 <span class="keyword">virtual</span> BOOL <a class="code" href="classPThread.html#z441_7">IsSuspended</a>() <span class="keyword">const</span>;00328 00330 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_14">Sleep</a>(00331 <span class="keyword">const</span> <a class="code" href="classPTimeInterval.html">PTimeInterval</a> & delay 00332 );00333 00337 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_8">SetPriority</a>(00338 <a class="code" href="classPThread.html#z437_0">Priority</a> priorityLevel 00339 );00340 00346 <span class="keyword">virtual</span> <a class="code" href="classPThread.html#z437_0">Priority</a> <a class="code" href="classPThread.html#z441_9">GetPriority</a>() <span class="keyword">const</span>;00347 00351 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_10">SetAutoDelete</a>(00352 <a class="code" href="classPThread.html#z437_1">AutoDeleteFlag</a> deletion = <a class="code" href="classPThread.html#z437_1s6">AutoDeleteThread</a> 00353 );00354 <a name="l00358"></a><a class="code" href="classPThread.html#z441_11">00358</a> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_11">SetNoAutoDelete</a>() { <a class="code" href="classPThread.html#z441_10">SetAutoDelete</a>(<a class="code" href="classPThread.html#z437_1s7">NoAutoDeleteThread</a>); }00359 00365 <span class="keyword">virtual</span> <a class="code" href="classPString.html">PString</a> <a class="code" href="classPThread.html#z441_12">GetThreadName</a>() <span class="keyword">const</span>;00366 00372 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z441_13">SetThreadName</a>(00373 <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & name 00374 );00376 00381 <span class="keyword">virtual</span> <a class="code" href="thread_8h.html#a1">PThreadIdentifier</a> <a class="code" href="classPThread.html#z443_0">GetThreadId</a>() <span class="keyword">const</span>;00382 00385 <span class="keyword">static</span> <a class="code" href="thread_8h.html#a1">PThreadIdentifier</a> <a class="code" href="classPThread.html#z443_2">GetCurrentThreadId</a>();00386 00394 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z443_1">Main</a>() = 0;00395 00405 <span class="keyword">static</span> <a class="code" href="classPThread.html">PThread</a> * <a class="code" href="classPThread.html#z443_3">Current</a>();00406 00413 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classPThread.html#z443_4">Yield</a>();00414 00419 <span class="keyword">static</span> <a class="code" href="classPThread.html">PThread</a> * <a class="code" href="classPThread.html#z443_5">Create</a>(00420 <span class="keyword">const</span> <a class="code" href="classPNotifier.html">PNotifier</a> & notifier, 00421 INT parameter = 0, 00422 <a class="code" href="classPThread.html#z437_1">AutoDeleteFlag</a> deletion = <a class="code" href="classPThread.html#z437_1s6">AutoDeleteThread</a>,00424 <a class="code" href="classPThread.html#z437_0">Priority</a> priorityLevel = <a class="code" href="classPThread.html#z437_0s2">NormalPriority</a>, 00425 <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & threadName = <a class="code" href="classPString.html#z231_33">PString::Empty</a>(), 00426 PINDEX stackSize = 10000 00427 );00429 00430 <span class="keyword">protected</span>:00431 <span class="keywordtype">void</span> <a class="code" href="classPThread.html#b0">InitialiseProcessThread</a>();00432 <span class="comment">/* Initialialise the primordial thread, the one in the PProcess. This is</span>00433 <span class="comment"> required due to the bootstrap logic of processes and threads.</span>00434 <span class="comment"> */</span>00435 00436 <span class="keyword">private</span>:00437 <a class="code" href="classPThread.html#z437_2">PThread</a>();00438 <span class="comment">// Create a new thread instance as part of a PProcess class.</span>00439 <a name="l00440"></a><a class="code" href="classPThread.html#l0">00440</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classPProcess.html">PProcess</a>;00441 <span class="comment">// So a PProcess can get at PThread() constructor but nothing else.</span>00442 00443 <a class="code" href="classPThread.html#z437_2">PThread</a>(<span class="keyword">const</span> <a class="code" href="classPThread.html">PThread</a> &) { }00444 <span class="comment">// Empty constructor to prevent copying of thread instances.</span>00445 00446 <a class="code" href="classPThread.html">PThread</a> & operator=(<span class="keyword">const</span> <a class="code" href="classPThread.html">PThread</a> &) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }00447 <span class="comment">// Empty assignment operator to prevent copying of thread instances.</span>00448 00449 BOOL autoDelete;00450 <span class="comment">// Automatically delete the thread on completion.</span>00451 00452 <span class="comment">// Give the thread a name for debugging purposes.</span>00453 <a class="code" href="classPString.html">PString</a> threadName;00454 00455 <span class="keyword">private</span>:00456 <span class="keywordtype">unsigned</span> traceBlockIndentLevel;<a name="l00457"></a><a class="code" href="classPThread.html#l1">00457</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classPTrace.html">PTrace</a>::Block;00458 00459 00460 <span class="comment">// Include platform dependent part of class</span>00461 #ifdef _WIN3200462 #include "msos/ptlib/thread.h"00463 #else00464 #include "unix/ptlib/thread.h"00465 #endif00466 };00467 00468 #endif <span class="comment">// _PTHREAD</span>00469 00470 <span class="comment">// End Of File ///////////////////////////////////////////////////////////////</span></pre></div><hr><address style="align: right;"><small>Generated on Wed Sep 29 22:44:12 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 + -