Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > eeacaa4eb55fa544d622989e42fc27b1 > files > 601

libyate-devel-2.0.0-2mdv2009.1.i586.rpm

<!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&nbsp;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&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;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 &lt;<a class="el" href="yateclass_8h-source.html">yateclass.h</a>&gt;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> { <br>
&nbsp;&nbsp;<b>Lowest</b>, 
<b>Low</b>, 
<b>Normal</b>, 
<b>High</b>, 
<br>
&nbsp;&nbsp;<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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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> *&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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>&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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">&nbsp;</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">&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 &amp; 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 *&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>prio</em> = <code>Normal</code></td><td>&nbsp;</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>&nbsp;</td><td>Static name of the thread (for debugging purpose only) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>prio</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>prio</em></td><td>&nbsp;</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>&nbsp;</td><td>Static name of the thread (for debugging purpose only) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>prio</em>&nbsp;</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>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>hard</em> = <code>false</code>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>exitNow</em> = <code>true</code>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>msec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>exitCheck</em> = <code>false</code></td><td>&nbsp;</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>&nbsp;</td><td>Number of milliseconds to sleep </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>exitCheck</em>&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>prio</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>defvalue</em> = <code>Normal</code></td><td>&nbsp;</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>&nbsp;</td><td>Name of the requested level </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>defvalue</em>&nbsp;</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>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>sec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>exitCheck</em> = <code>false</code></td><td>&nbsp;</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>&nbsp;</td><td>Number of seconds to sleep </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>exitCheck</em>&nbsp;</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>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>usec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>exitCheck</em> = <code>false</code></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>exitCheck</em> = <code>false</code>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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&nbsp;
<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>