<!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>GNU CommonC++: thread.h File Reference</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.3 --> <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><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> </div> <div class="contents"> <h1>thread.h File Reference</h1> <p>Synchronization and threading services. <a href="#_details">More...</a></p> <code>#include <<a class="el" href="config_8h_source.html">cc++/config.h</a>></code><br/> <code>#include <<a class="el" href="string_8h_source.html">cc++/string.h</a>></code><br/> <code>#include <ctime></code><br/> <code>#include <pthread.h></code><br/> <code>#include <time.h></code><br/> <code>#include <signal.h></code><br/> <code>#include <unistd.h></code><br/> <p><a href="thread_8h_source.html">Go to the source code of this file.</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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_mutex.html">ost::Mutex</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classost_1_1_mutex.html" title="The Mutex class is used to protect a section of code so that at any given time only...">Mutex</a> class is used to protect a section of code so that at any given time only a single thread can perform the protected operation. <a href="classost_1_1_mutex.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_mutex_lock.html">ost::MutexLock</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classost_1_1_mutex_lock.html" title="The MutexLock class is used to protect a section of code so that at any given time...">MutexLock</a> class is used to protect a section of code so that at any given time only a single thread can perform the protected operation. <a href="classost_1_1_mutex_lock.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_thread_lock.html">ost::ThreadLock</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classost_1_1_thread_lock.html" title="The ThreadLock class impliments a thread rwlock for optimal reader performance on...">ThreadLock</a> class impliments a thread rwlock for optimal reader performance on systems which have rwlock support, and reverts to a simple mutex for those that do not. <a href="classost_1_1_thread_lock.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_read_lock.html">ost::ReadLock</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classost_1_1_read_lock.html" title="The ReadLock class is used to protect a section of code through a ThreadLock for...">ReadLock</a> class is used to protect a section of code through a <a class="el" href="classost_1_1_thread_lock.html" title="The ThreadLock class impliments a thread rwlock for optimal reader performance on...">ThreadLock</a> for "read" access to the member function. <a href="classost_1_1_read_lock.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_write_lock.html">ost::WriteLock</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classost_1_1_write_lock.html" title="The WriteLock class is used to protect a section of code through a ThreadLock for...">WriteLock</a> class is used to protect a section of code through a <a class="el" href="classost_1_1_thread_lock.html" title="The ThreadLock class impliments a thread rwlock for optimal reader performance on...">ThreadLock</a> for "write" access to the member function. <a href="classost_1_1_write_lock.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_mutex_counter.html">ost::MutexCounter</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classost_1_1_mutex.html" title="The Mutex class is used to protect a section of code so that at any given time only...">Mutex</a> <a class="el" href="classost_1_1_counter.html" title="The counter template is used for generic objects which act as automatic counters...">Counter</a> is a counter variable which can safely be incremented or decremented by multiple threads. <a href="classost_1_1_mutex_counter.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_atomic_counter.html">ost::AtomicCounter</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classost_1_1_atomic_counter.html" title="The AtomicCounter class offers thread-safe manipulation of an integer counter.">AtomicCounter</a> class offers thread-safe manipulation of an integer counter. <a href="classost_1_1_atomic_counter.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_conditional.html">ost::Conditional</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">A conditional variable synchcronization object for one to one and one to many signal and control events between processes. <a href="classost_1_1_conditional.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_semaphore.html">ost::Semaphore</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">A semaphore is generally used as a synchronization object between multiple threads or to protect a limited and finite resource such as a memory or thread pool. <a href="classost_1_1_semaphore.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_semaphore_lock.html">ost::SemaphoreLock</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classost_1_1_semaphore_lock.html" title="The SemaphoreLock class is used to protect a section of code through a semaphore...">SemaphoreLock</a> class is used to protect a section of code through a semaphore so that only x instances of the member function may execute concurrently. <a href="classost_1_1_semaphore_lock.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_event.html">ost::Event</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classost_1_1_event.html" title="The Event class implements a feature originally found in the WIN32 API; event notification...">Event</a> class implements a feature originally found in the WIN32 API; event notification. <a href="classost_1_1_event.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_thread.html">ost::Thread</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Every thread of execution in an application is created by instantiating an object of a class derived from the <a class="el" href="classost_1_1_thread.html" title="Every thread of execution in an application is created by instantiating an object...">Thread</a> class. <a href="classost_1_1_thread.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_cancellation.html">ost::Cancellation</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">A class to automatically set the thread cancellation mode of a member function. <a href="classost_1_1_cancellation.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_posix_thread.html">ost::PosixThread</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_thread_key.html">ost::ThreadKey</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This class allows the creation of a thread context unique "pointer" that can be set and retrieved and can be used to create thread specific data areas for implementing "thread safe" library routines. <a href="classost_1_1_thread_key.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_timer_port.html">ost::TimerPort</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Timer ports are used to provide synchronized timing events when managed under a "service thread" such as <a class="el" href="classost_1_1_socket_service.html" title="The SocketService is a thread pool object that is meant to service attached socket...">SocketService</a>. <a href="classost_1_1_timer_port.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_sys_time.html">ost::SysTime</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This class is used to access non-reentrant date and time functions in the standard C library. <a href="classost_1_1_sys_time.html#_details">More...</a><br/></td></tr> <tr><td colspan="2"><h2>Namespaces</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceost.html">ost</a></td></tr> <tr><td colspan="2"><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8h.html#a9fc514088fa3739a1300ce30ca6585d5">CCXX_POSIX</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a> ~((<a class="el" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>) 0)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8h.html#a9d5589bc014dcec626ff198d5c9370cd">ENTER_CRITICAL</a> enterMutex();</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8h.html#af1b76aeceb2370c5fcedee46f9cd3d09">LEAVE_CRITICAL</a> leaveMutex();</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8h.html#a61438c8055883ef92ffb09c68f70f049">ENTER_DEFERRED</a> setCancel(cancelDeferred);</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8h.html#ac6e53238dd0519d7c7117b2b40d4312b">LEAVE_DEFERRED</a> setCancel(cancelImmediate);</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8h.html#a5e09ab8cba99b274fd420bd76f39b205">psleep</a>(x) (sleep)(x)</td></tr> <tr><td colspan="2"><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef pthread_t </td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8h.html#a3f0d0226a694bf1e508e1b1c758e6ae6">cctid_t</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceost.html#a5dca865b107f598c88bd2106ea56c16e">ost::signo_t</a></td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct timespec * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceost.html#a8fd139f80e945ac6d8cc53868cdacca6">ost::getTimeout</a> (struct timespec *spec, <a class="el" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceost.html#a24c7774639b3768bdd45b65a296f6369">ost::wait</a> (signo_t signo)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">Thread * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceost.html#a99c7f7d02b00922b0f5ee62fc3bb75fd">ost::getThread</a> (void)</td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Synchronization and threading services. </p> <hr/><h2>Define Documentation</h2> <a class="anchor" id="a9fc514088fa3739a1300ce30ca6585d5"></a><!-- doxytag: member="thread.h::CCXX_POSIX" ref="a9fc514088fa3739a1300ce30ca6585d5" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CCXX_POSIX</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a9d5589bc014dcec626ff198d5c9370cd"></a><!-- doxytag: member="thread.h::ENTER_CRITICAL" ref="a9d5589bc014dcec626ff198d5c9370cd" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ENTER_CRITICAL enterMutex();</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a61438c8055883ef92ffb09c68f70f049"></a><!-- doxytag: member="thread.h::ENTER_DEFERRED" ref="a61438c8055883ef92ffb09c68f70f049" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ENTER_DEFERRED setCancel(cancelDeferred);</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="af1b76aeceb2370c5fcedee46f9cd3d09"></a><!-- doxytag: member="thread.h::LEAVE_CRITICAL" ref="af1b76aeceb2370c5fcedee46f9cd3d09" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LEAVE_CRITICAL leaveMutex();</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ac6e53238dd0519d7c7117b2b40d4312b"></a><!-- doxytag: member="thread.h::LEAVE_DEFERRED" ref="ac6e53238dd0519d7c7117b2b40d4312b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LEAVE_DEFERRED setCancel(cancelImmediate);</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a5e09ab8cba99b274fd420bd76f39b205"></a><!-- doxytag: member="thread.h::psleep" ref="a5e09ab8cba99b274fd420bd76f39b205" args="(x)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define psleep</td> <td>(</td> <td class="paramtype">x </td> <td class="paramname"></td> <td> ) </td> <td> (sleep)(x)</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a74f2d4c747bce0b8f7f7c1f48e651876"></a><!-- doxytag: member="thread.h::TIMEOUT_INF" ref="a74f2d4c747bce0b8f7f7c1f48e651876" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TIMEOUT_INF ~((<a class="el" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>) 0)</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Typedef Documentation</h2> <a class="anchor" id="a3f0d0226a694bf1e508e1b1c758e6ae6"></a><!-- doxytag: member="thread.h::cctid_t" ref="a3f0d0226a694bf1e508e1b1c758e6ae6" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef pthread_t <a class="el" href="thread_8h.html#a3f0d0226a694bf1e508e1b1c758e6ae6">cctid_t</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="af412159e5cef839836a5e7b19ee75d1c"></a><!-- doxytag: member="thread.h::timeout_t" ref="af412159e5cef839836a5e7b19ee75d1c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef unsigned long <a class="el" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Fri Nov 12 09:57:39 2010 for GNU CommonC++ by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>