Sophie

Sophie

distrib > Mandriva > 2010.0 > x86_64 > by-pkgid > 7f3e5f74d754b480ec33648905c4afae > files > 515

glibmm2.4-doc-2.22.1-1mdv2010.0.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>glibmm: Threads</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Threads</h1>
<p><a class="el" href="classGlib_1_1Thread.html" title="Represents a running thread.">Thread</a> abstraction; including threads, different mutexes, conditions and thread private data. <a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1ThreadError.html">Glib::ThreadError</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classGlib_1_1Exception.html">Exception</a> class for thread-related errors. <a href="classGlib_1_1ThreadError.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Thread.html">Glib::Thread</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a running thread. <a href="classGlib_1_1Thread.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Thread_1_1Exit.html">Glib::Thread::Exit</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exception class used to exit from a thread. <a href="classGlib_1_1Thread_1_1Exit.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGlib_1_1StaticMutex.html">Glib::StaticMutex</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Like <a class="el" href="classGlib_1_1Mutex.html" title="Represents a mutex (mutual exclusion).">Glib::Mutex</a>, but can be defined at compile time. <a href="structGlib_1_1StaticMutex.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Mutex.html">Glib::Mutex</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a mutex (mutual exclusion). <a href="classGlib_1_1Mutex.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Mutex_1_1Lock.html">Glib::Mutex::Lock</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility class for exception-safe mutex locking. <a href="classGlib_1_1Mutex_1_1Lock.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGlib_1_1StaticRecMutex.html">Glib::StaticRecMutex</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Like <a class="el" href="classGlib_1_1RecMutex.html">Glib::RecMutex</a>, but can be defined at compile time. <a href="structGlib_1_1StaticRecMutex.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1RecMutex.html">Glib::RecMutex</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1RecMutex_1_1Lock.html">Glib::RecMutex::Lock</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility class for exception-safe locking of recursive mutexes. <a href="classGlib_1_1RecMutex_1_1Lock.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGlib_1_1StaticRWLock.html">Glib::StaticRWLock</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Like <a class="el" href="classGlib_1_1RWLock.html">Glib::RWLock</a>, but can be defined at compile time. <a href="structGlib_1_1StaticRWLock.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1RWLock.html">Glib::RWLock</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1RWLock_1_1ReaderLock.html">Glib::RWLock::ReaderLock</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility class for exception-safe locking of read/write locks. <a href="classGlib_1_1RWLock_1_1ReaderLock.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1RWLock_1_1WriterLock.html">Glib::RWLock::WriterLock</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility class for exception-safe locking of read/write locks. <a href="classGlib_1_1RWLock_1_1WriterLock.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Cond.html">Glib::Cond</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An opaque data structure to represent a condition. <a href="classGlib_1_1Cond.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGlib_1_1StaticPrivate.html">Glib::StaticPrivate&lt; T &gt;</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Private.html">Glib::Private&lt; T &gt;</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Dispatcher.html">Glib::Dispatcher</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal class for inter-thread communication. <a href="classGlib_1_1Dispatcher.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Threads.html#ga2dd111336e3b057b51ca5871795fffa4">Glib::NotLock</a> { <a class="el" href="group__Threads.html#gga2dd111336e3b057b51ca5871795fffa4a9681fb4e85e62ba64e39a12526eaa840">Glib::NOT_LOCK</a>
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Threads.html#ga7441a36336ea4cdb35c0fddbf3f97b19">Glib::TryLock</a> { <a class="el" href="group__Threads.html#gga7441a36336ea4cdb35c0fddbf3f97b19adf6b2565785992ff637cbc453988841d">Glib::TRY_LOCK</a>
 }</td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Threads.html#gab26d01c776801f1fff00753e97af4fc7">Glib::thread_init</a> (GThreadFunctions* vtable=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the GLib thread system. <a href="#gab26d01c776801f1fff00753e97af4fc7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Threads.html#gad59d126f6197035e6f6a31e7f4d87818">Glib::thread_supported</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the thread system is initialized. <a href="#gad59d126f6197035e6f6a31e7f4d87818"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">Thread*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Threads.html#ga6bfbb3119eaac9fa8cb725aa1e82f61e">Glib::Thread::wrap</a> (GThread* gobject)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p><a class="el" href="classGlib_1_1Thread.html" title="Represents a running thread.">Thread</a> abstraction; including threads, different mutexes, conditions and thread private data. </p>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="ga2dd111336e3b057b51ca5871795fffa4"></a><!-- doxytag: member="Glib::NotLock" ref="ga2dd111336e3b057b51ca5871795fffa4" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__Threads.html#ga2dd111336e3b057b51ca5871795fffa4">Glib::NotLock</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga2dd111336e3b057b51ca5871795fffa4a9681fb4e85e62ba64e39a12526eaa840"></a><!-- doxytag: member="NOT_LOCK" ref="gga2dd111336e3b057b51ca5871795fffa4a9681fb4e85e62ba64e39a12526eaa840" args="" -->NOT_LOCK</em>&#160;</td><td>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="ga7441a36336ea4cdb35c0fddbf3f97b19"></a><!-- doxytag: member="Glib::TryLock" ref="ga7441a36336ea4cdb35c0fddbf3f97b19" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__Threads.html#ga7441a36336ea4cdb35c0fddbf3f97b19">Glib::TryLock</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga7441a36336ea4cdb35c0fddbf3f97b19adf6b2565785992ff637cbc453988841d"></a><!-- doxytag: member="TRY_LOCK" ref="gga7441a36336ea4cdb35c0fddbf3f97b19adf6b2565785992ff637cbc453988841d" args="" -->TRY_LOCK</em>&#160;</td><td>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gab26d01c776801f1fff00753e97af4fc7"></a><!-- doxytag: member="Glib::thread_init" ref="gab26d01c776801f1fff00753e97af4fc7" args="(GThreadFunctions *vtable=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Glib::thread_init </td>
          <td>(</td>
          <td class="paramtype">GThreadFunctions *&#160;</td>
          <td class="paramname"> <em>vtable</em> = <code>0</code></td>
          <td>&#160;)&#160;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initializes the GLib thread system. </p>
<p>Before you use a thread related function in glibmm, you should initialize the thread system. This is done by calling <a class="el" href="group__Threads.html#gab26d01c776801f1fff00753e97af4fc7" title="Initializes the GLib thread system.">Glib::thread_init()</a>.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>You should only call <a class="el" href="group__Threads.html#gab26d01c776801f1fff00753e97af4fc7" title="Initializes the GLib thread system.">thread_init()</a> with a non-<code>0</code> parameter if you really know what you are doing.</dd>
<dd>
<a class="el" href="group__Threads.html#gab26d01c776801f1fff00753e97af4fc7" title="Initializes the GLib thread system.">thread_init()</a> must not be called directly or indirectly as a callback from glibmm. Also no mutexes may be currently locked while calling <a class="el" href="group__Threads.html#gab26d01c776801f1fff00753e97af4fc7" title="Initializes the GLib thread system.">thread_init()</a>.</dd></dl>
<p><a class="el" href="group__Threads.html#gab26d01c776801f1fff00753e97af4fc7" title="Initializes the GLib thread system.">thread_init()</a> might only be called once. On the second call it will abort with an error. If you want to make sure that the thread system is initialized, you can do that too: </p>
<div class="fragment"><pre class="fragment"> <span class="keywordflow">if</span>(!<a class="code" href="group__Threads.html#gad59d126f6197035e6f6a31e7f4d87818" title="Returns whether the thread system is initialized.">Glib::thread_supported</a>()) <a class="code" href="group__Threads.html#gab26d01c776801f1fff00753e97af4fc7" title="Initializes the GLib thread system.">Glib::thread_init</a>();
</pre></div><p> After that line either the thread system is initialized, or the program will abort if no thread system is available in GLib, i.e. either <code>G_THREADS_ENABLED</code> is not defined or <code>G_THREADS_IMPL_NONE</code> is defined.</p>
<p>If no thread system is available and <em>vtable</em> is <code>0</code> or if not all elements of <em>vtable</em> are non-<code>0</code>, then <a class="el" href="group__Threads.html#gab26d01c776801f1fff00753e97af4fc7" title="Initializes the GLib thread system.">thread_init()</a> will abort.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>To use <a class="el" href="group__Threads.html#gab26d01c776801f1fff00753e97af4fc7" title="Initializes the GLib thread system.">thread_init()</a> in your program, you have to link with the libraries that the command <code>pkg-config&#160;--libs&#160;gthread-2.0</code> outputs. This is not the case for all the other thread related functions of glibmm. Those can be used without having to link with the thread libraries. (You <em>have</em> to link with <code>gthread-2.0</code> if you actually want to use threads in your application, though.)</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>vtable</em>&#160;</td><td>A function table of type <code>GThreadFunctions</code>, that provides the entry points to the thread system to be used. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="thread_2dispatcher_8cc-example.html#a19">thread/dispatcher.cc</a>, and <a class="el" href="thread_2thread_8cc-example.html#a11">thread/thread.cc</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad59d126f6197035e6f6a31e7f4d87818"></a><!-- doxytag: member="Glib::thread_supported" ref="gad59d126f6197035e6f6a31e7f4d87818" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Glib::thread_supported </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&#160;)&#160;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns whether the thread system is initialized. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code>, if the thread system is initialized. </dd></dl>

</div>
</div>
<a class="anchor" id="ga6bfbb3119eaac9fa8cb725aa1e82f61e"></a><!-- doxytag: member="Glib::Thread::wrap" ref="ga6bfbb3119eaac9fa8cb725aa1e82f61e" args="(GThread *gobject)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Thread * wrap </td>
          <td>(</td>
          <td class="paramtype">GThread *&#160;</td>
          <td class="paramname"> <em>gobject</em></td>
          <td>&#160;)&#160;</td>
          <td><code> [related, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Mon Sep 21 11:07:19 2009 for glibmm by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>