<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Yate: Thread Class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="namespaceTelEngine.html">TelEngine</a>::<a class="el" href="classTelEngine_1_1Thread.html">Thread</a> </div> </div> <div class="contents"> <h1>Thread Class Reference</h1><!-- doxytag: class="TelEngine::Thread" --><!-- doxytag: inherits="TelEngine::Runnable" --><a class="el" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a> support class. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="yateclass_8h-source.html">yateclass.h</a>></code> <p> <div class="dynheader"> Inheritance diagram for Thread:</div> <div class="dynsection"> <p><center><img src="classTelEngine_1_1Thread.png" usemap="#Thread_map" border="0" alt=""></center> <map name="Thread_map"> <area href="classTelEngine_1_1Runnable.html" alt="Runnable" shape="rect" coords="80,0,150,24"> <area href="classTelEngine_1_1Client.html" alt="Client" shape="rect" coords="0,112,70,136"> <area href="classTelEngine_1_1Router.html" alt="Router" shape="rect" coords="80,112,150,136"> <area href="classTelEngine_1_1RTPGroup.html" alt="RTPGroup" shape="rect" coords="160,112,230,136"> </map> </div> <p> <a href="classTelEngine_1_1Thread-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Types</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> { <br> <b>Lowest</b>, <b>Low</b>, <b>Normal</b>, <b>High</b>, <br> <b>Highest</b> <br> }</td></tr> <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#09f4fe805fa9a54d4d68c5b29c1502e1">cleanup</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#b98398dde0595d5cf8a52fbc8937eff5">startup</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#38cc0cf6cb8c20b57ae92558f887569e">error</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#93abe5af6984d9ff0e8c9128cdcd846f">running</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#c221f9ab2650cf14c5da7669da310b57">locks</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#278ee3d69582e50938dd6a879098bb4b">locked</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#862958aa3c2b9bf36903f1f0f2e81c54">name</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#ee73278e681bef42506bcd874b477bc9">cancel</a> (bool hard=false)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#b8c6d750abbbdd0a472c3566ee149ccc">isCurrent</a> () const </td></tr> <tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#4b1cfcb4e878c70d988d977868d6a186">currentName</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#6048d7ab7d2efd05e40a0219c11b119b">yield</a> (bool exitCheck=false)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#17393994c4bbc17b647168c8ce13aa84">sleep</a> (unsigned int sec, bool exitCheck=false)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#9e65ef33567ca0392b53c9ad4ebea375">msleep</a> (unsigned long msec, bool exitCheck=false)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#3df21ac8cd3e5ef053799e4980ea971c">usleep</a> (unsigned long usec, bool exitCheck=false)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classTelEngine_1_1Thread.html">Thread</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#c1c7f2f9509fd6efe4f8d421afb40362">current</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#09624f463911151150731cf8f9cb485d">count</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#301ab247db9e4e3092b31663ea64881b">check</a> (bool exitNow=true)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#98a9fd114ee065ff149a7d4fb4de8de8">exit</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#ebad0362d0e4144b603d59f74fcabb5a">priority</a> (const char *name, <a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> defvalue=Normal)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#9c29294a6ca0be349529543469178a48">priority</a> (<a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> prio)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#80a4bed1f0088c15500a0f609bd34b4e">killall</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#16711ae87557eefb945bd9d15ea419c1">preExec</a> ()</td></tr> <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#fe38921e8b9f9cb245d879e8f9d5f6a2">Thread</a> (const char *name=0, <a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> prio=Normal)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#52178e43674a8ba2c3b36009f0b23249">Thread</a> (const char *name, const char *prio)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#1d39e605a8fe420b213cbdd9605f525f">~Thread</a> ()</td></tr> <tr><td colspan="2"><br><h2>Friends</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e49055b3465fa8642445b9cdcb39b88c"></a><!-- doxytag: member="TelEngine::Thread::ThreadPrivate" ref="e49055b3465fa8642445b9cdcb39b88c" args="" --> class </td><td class="memItemRight" valign="bottom"><b>ThreadPrivate</b></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9aab3f30d662ddd199b34b546957e465"></a><!-- doxytag: member="TelEngine::Thread::MutexPrivate" ref="9aab3f30d662ddd199b34b546957e465" args="" --> class </td><td class="memItemRight" valign="bottom"><b>MutexPrivate</b></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> <a class="el" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a> support class. <p> A thread is a separate execution context that exists in the same address space. Threads make better use of multiple processor machines and allow blocking one execution thread while allowing other to run. <hr><h2>Member Enumeration Documentation</h2> <a class="anchor" name="315655b1bb5848c063491adffde62b15"></a><!-- doxytag: member="TelEngine::Thread::Priority" ref="315655b1bb5848c063491adffde62b15" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Running priorities, their mapping is operating system dependent </div> </div><p> <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="fe38921e8b9f9cb245d879e8f9d5f6a2"></a><!-- doxytag: member="TelEngine::Thread::Thread" ref="fe38921e8b9f9cb245d879e8f9d5f6a2" args="(const char *name=0, Priority prio=Normal)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1Thread.html">Thread</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> </td> <td class="paramname"> <em>prio</em> = <code>Normal</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Creates and starts a new thread <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Static name of the thread (for debugging purpose only) </td></tr> <tr><td valign="top"></td><td valign="top"><em>prio</em> </td><td><a class="el" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a> priority </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="52178e43674a8ba2c3b36009f0b23249"></a><!-- doxytag: member="TelEngine::Thread::Thread" ref="52178e43674a8ba2c3b36009f0b23249" args="(const char *name, const char *prio)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1Thread.html">Thread</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>prio</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Creates and starts a new thread <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Static name of the thread (for debugging purpose only) </td></tr> <tr><td valign="top"></td><td valign="top"><em>prio</em> </td><td><a class="el" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a> priority level name </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="1d39e605a8fe420b213cbdd9605f525f"></a><!-- doxytag: member="TelEngine::Thread::~Thread" ref="1d39e605a8fe420b213cbdd9605f525f" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual ~<a class="el" href="classTelEngine_1_1Thread.html">Thread</a> </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> The destructor is called when the thread terminates </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="ee73278e681bef42506bcd874b477bc9"></a><!-- doxytag: member="TelEngine::Thread::cancel" ref="ee73278e681bef42506bcd874b477bc9" args="(bool hard=false)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void cancel </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"> <em>hard</em> = <code>false</code> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Terminates the specified thread. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>hard</em> </td><td>Kill the thread the hard way rather than just setting an exit check marker </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="301ab247db9e4e3092b31663ea64881b"></a><!-- doxytag: member="TelEngine::Thread::check" ref="301ab247db9e4e3092b31663ea64881b" args="(bool exitNow=true)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static bool check </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"> <em>exitNow</em> = <code>true</code> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Check if the current thread was asked to terminate. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>exitNow</em> </td><td>If thread is marked as cancelled then terminate immediately </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>False if thread should continue running, true if it should stop </dd></dl> </div> </div><p> <a class="anchor" name="09f4fe805fa9a54d4d68c5b29c1502e1"></a><!-- doxytag: member="TelEngine::Thread::cleanup" ref="09f4fe805fa9a54d4d68c5b29c1502e1" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void cleanup </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> This method is called when the current thread terminates. <p>Reimplemented in <a class="el" href="classTelEngine_1_1Router.html#09f4fe805fa9a54d4d68c5b29c1502e1">Router</a>, <a class="el" href="classTelEngine_1_1Client.html#09f4fe805fa9a54d4d68c5b29c1502e1">Client</a>, and <a class="el" href="classTelEngine_1_1RTPGroup.html#09f4fe805fa9a54d4d68c5b29c1502e1">RTPGroup</a>.</p> </div> </div><p> <a class="anchor" name="09624f463911151150731cf8f9cb485d"></a><!-- doxytag: member="TelEngine::Thread::count" ref="09624f463911151150731cf8f9cb485d" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int count </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the number of Yate created threads <dl class="return" compact><dt><b>Returns:</b></dt><dd>Count of current <a class="el" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a> objects </dd></dl> </div> </div><p> <a class="anchor" name="c1c7f2f9509fd6efe4f8d421afb40362"></a><!-- doxytag: member="TelEngine::Thread::current" ref="c1c7f2f9509fd6efe4f8d421afb40362" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="classTelEngine_1_1Thread.html">Thread</a>* current </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get a pointer to the currently running thread <dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the current thread or NULL for the main thread or threads created by other libraries </dd></dl> </div> </div><p> <a class="anchor" name="4b1cfcb4e878c70d988d977868d6a186"></a><!-- doxytag: member="TelEngine::Thread::currentName" ref="4b1cfcb4e878c70d988d977868d6a186" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static const char* currentName </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the name of the currently running thread <dl class="return" compact><dt><b>Returns:</b></dt><dd>The pointer that was passed in the thread's constructor </dd></dl> </div> </div><p> <a class="anchor" name="38cc0cf6cb8c20b57ae92558f887569e"></a><!-- doxytag: member="TelEngine::Thread::error" ref="38cc0cf6cb8c20b57ae92558f887569e" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool error </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> Check if the thread creation failed <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if an error occured, false if created ok </dd></dl> </div> </div><p> <a class="anchor" name="98a9fd114ee065ff149a7d4fb4de8de8"></a><!-- doxytag: member="TelEngine::Thread::exit" ref="98a9fd114ee065ff149a7d4fb4de8de8" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void exit </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Terminates the current thread. </div> </div><p> <a class="anchor" name="b8c6d750abbbdd0a472c3566ee149ccc"></a><!-- doxytag: member="TelEngine::Thread::isCurrent" ref="b8c6d750abbbdd0a472c3566ee149ccc" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool isCurrent </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Check if this thread is the currently running thread <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if this is the current thread </dd></dl> </div> </div><p> <a class="anchor" name="80a4bed1f0088c15500a0f609bd34b4e"></a><!-- doxytag: member="TelEngine::Thread::killall" ref="80a4bed1f0088c15500a0f609bd34b4e" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void killall </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Kills all other running threads. Ouch! Must be called from the main thread or it does nothing. </div> </div><p> <a class="anchor" name="278ee3d69582e50938dd6a879098bb4b"></a><!-- doxytag: member="TelEngine::Thread::locked" ref="278ee3d69582e50938dd6a879098bb4b" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool locked </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Check if the thread is currently helding or attempting to lock a mutex <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the current thread is in an unsafe to cancel state </dd></dl> </div> </div><p> <a class="anchor" name="c221f9ab2650cf14c5da7669da310b57"></a><!-- doxytag: member="TelEngine::Thread::locks" ref="c221f9ab2650cf14c5da7669da310b57" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int locks </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Count how many Yate mutexes are kept locked by this thread <dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of <a class="el" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a> locks held by this thread </dd></dl> </div> </div><p> <a class="anchor" name="9e65ef33567ca0392b53c9ad4ebea375"></a><!-- doxytag: member="TelEngine::Thread::msleep" ref="9e65ef33567ca0392b53c9ad4ebea375" args="(unsigned long msec, bool exitCheck=false)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void msleep </td> <td>(</td> <td class="paramtype">unsigned long </td> <td class="paramname"> <em>msec</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>exitCheck</em> = <code>false</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Sleep for a number of milliseconds <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>msec</em> </td><td>Number of milliseconds to sleep </td></tr> <tr><td valign="top"></td><td valign="top"><em>exitCheck</em> </td><td>Terminate the thread if asked so </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="862958aa3c2b9bf36903f1f0f2e81c54"></a><!-- doxytag: member="TelEngine::Thread::name" ref="862958aa3c2b9bf36903f1f0f2e81c54" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* name </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> Get the name of this thread <dl class="return" compact><dt><b>Returns:</b></dt><dd>The pointer that was passed in the constructor </dd></dl> </div> </div><p> <a class="anchor" name="16711ae87557eefb945bd9d15ea419c1"></a><!-- doxytag: member="TelEngine::Thread::preExec" ref="16711ae87557eefb945bd9d15ea419c1" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void preExec </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> On some platforms this method kills all other running threads. Must be called after fork() but before any exec*() call. </div> </div><p> <a class="anchor" name="9c29294a6ca0be349529543469178a48"></a><!-- doxytag: member="TelEngine::Thread::priority" ref="9c29294a6ca0be349529543469178a48" args="(Priority prio)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static const char* priority </td> <td>(</td> <td class="paramtype"><a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> </td> <td class="paramname"> <em>prio</em> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Convert a priority level to a textual name <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>prio</em> </td><td>Priority level to convert </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Name of the level or NULL if an invalid argument was provided </dd></dl> </div> </div><p> <a class="anchor" name="ebad0362d0e4144b603d59f74fcabb5a"></a><!-- doxytag: member="TelEngine::Thread::priority" ref="ebad0362d0e4144b603d59f74fcabb5a" args="(const char *name, Priority defvalue=Normal)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> priority </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> </td> <td class="paramname"> <em>defvalue</em> = <code>Normal</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Convert a priority name to a thread priority level <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Name of the requested level </td></tr> <tr><td valign="top"></td><td valign="top"><em>defvalue</em> </td><td>Priority to return in case of an invalid name </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A thread priority level </dd></dl> </div> </div><p> <a class="anchor" name="93abe5af6984d9ff0e8c9128cdcd846f"></a><!-- doxytag: member="TelEngine::Thread::running" ref="93abe5af6984d9ff0e8c9128cdcd846f" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool running </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> Check if the thread is running or not <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if running, false if it has terminated or no startup called </dd></dl> </div> </div><p> <a class="anchor" name="17393994c4bbc17b647168c8ce13aa84"></a><!-- doxytag: member="TelEngine::Thread::sleep" ref="17393994c4bbc17b647168c8ce13aa84" args="(unsigned int sec, bool exitCheck=false)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void sleep </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>sec</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>exitCheck</em> = <code>false</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Sleep for a number of seconds <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sec</em> </td><td>Number of seconds to sleep </td></tr> <tr><td valign="top"></td><td valign="top"><em>exitCheck</em> </td><td>Terminate the thread if asked so </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="b98398dde0595d5cf8a52fbc8937eff5"></a><!-- doxytag: member="TelEngine::Thread::startup" ref="b98398dde0595d5cf8a52fbc8937eff5" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool startup </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Actually starts running the new thread which lingers after creation <dl class="return" compact><dt><b>Returns:</b></dt><dd>False if an error occured, true if started ok </dd></dl> </div> </div><p> <a class="anchor" name="3df21ac8cd3e5ef053799e4980ea971c"></a><!-- doxytag: member="TelEngine::Thread::usleep" ref="3df21ac8cd3e5ef053799e4980ea971c" args="(unsigned long usec, bool exitCheck=false)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void usleep </td> <td>(</td> <td class="paramtype">unsigned long </td> <td class="paramname"> <em>usec</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>exitCheck</em> = <code>false</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Sleep for a number of microseconds <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>usec</em> </td><td>Number of microseconds to sleep, may be rounded to milliseconds on some platforms </td></tr> <tr><td valign="top"></td><td valign="top"><em>exitCheck</em> </td><td>Terminate the thread if asked so </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="6048d7ab7d2efd05e40a0219c11b119b"></a><!-- doxytag: member="TelEngine::Thread::yield" ref="6048d7ab7d2efd05e40a0219c11b119b" args="(bool exitCheck=false)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void yield </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"> <em>exitCheck</em> = <code>false</code> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Give up the currently running timeslice. Note that on some platforms it also sleeps for the operating system's scheduler resolution <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>exitCheck</em> </td><td>Terminate the thread if asked so </td></tr> </table> </dl> </div> </div><p> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="yateclass_8h-source.html">yateclass.h</a></ul> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Sun Dec 7 21:36:11 2008 for Yate by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.7.1 </small></address> </body> </html>