<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>Threads</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <div align="left"><a href="http://www.mrpt.org/">Main MRPT website</a> > <b>C++ reference</b> </div> <div align="right"> <a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a> </div> <!-- Generated by Doxygen 1.7.5 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related 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="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <div class="left"> <form id="FSearchBox" action="search.php" method="get"> <img id="MSearchSelect" src="search/mag.png" alt=""/> <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"/> </form> </div><div class="right"></div> </div> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#namespaces">Namespaces</a> | <a href="#enum-members">Enumerations</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Threads</div> </div> <div class="ingroups"><a class="el" href="group__mrpt__base__grp.html">[mrpt-base]</a></div></div> <div class="contents"> <div class="dynheader"> Collaboration diagram for Threads:</div> <div class="dyncontent"> <center><table><tr><td><img src="group__mrpt__thread.png" border="0" alt="" usemap="#group____mrpt____thread"/> <map name="group____mrpt____thread" id="group____mrpt____thread"> <area shape="rect" id="node2" href="group__mrpt__base__grp.html" title=" Back to list of all libraries | See all modules   " alt="" coords="5,5,93,32"/></map> </td></tr></table></center> </div> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1system_1_1_t_thread_handle.html">mrpt::system::TThreadHandle</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This structure contains the information needed to interface the threads API on each platform: <a href="structmrpt_1_1system_1_1_t_thread_handle.html#details">More...</a><br/></td></tr> <tr><td colspan="2"><h2><a name="namespaces"></a> Namespaces</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1system_1_1detail.html">mrpt::system::detail</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Auxiliary classes used internally to MRPT. </p> <br/></td></tr> <tr><td colspan="2"><h2><a name="enum-members"></a> Enumerations</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga8c2faa8d1ee370745e9f2c89a417bfa7">mrpt::system::TProcessPriority</a> { <a class="el" href="group__mrpt__thread.html#gga8c2faa8d1ee370745e9f2c89a417bfa7a11576a4e0680e8495b63a94fa985abfc">mrpt::system::ppIdle</a> = 0, <a class="el" href="group__mrpt__thread.html#gga8c2faa8d1ee370745e9f2c89a417bfa7ad46800cfc911ac0aeb26f404f1a9e878">mrpt::system::ppNormal</a>, <a class="el" href="group__mrpt__thread.html#gga8c2faa8d1ee370745e9f2c89a417bfa7a192fc163166ceb14848bd98f1bd85fb4">mrpt::system::ppHigh</a>, <a class="el" href="group__mrpt__thread.html#gga8c2faa8d1ee370745e9f2c89a417bfa7a14f9bd2a1ce9ee2f9a12efba60b29fbb">mrpt::system::ppVeryHigh</a> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The type for cross-platform process (application) priorities. <a href="group__mrpt__thread.html#ga8c2faa8d1ee370745e9f2c89a417bfa7">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga37334359dc65d0cbef086685c837d27f">mrpt::system::TThreadPriority</a> { <br/>   <a class="el" href="group__mrpt__thread.html#gga37334359dc65d0cbef086685c837d27faae6a0fd19982e5399847a60d84c6a331">mrpt::system::tpLowests</a> = -15, <a class="el" href="group__mrpt__thread.html#gga37334359dc65d0cbef086685c837d27fa3db6aa1cdd443d3e9a3720ab3359ad3c">mrpt::system::tpLower</a> = -2, <a class="el" href="group__mrpt__thread.html#gga37334359dc65d0cbef086685c837d27fa9948aeb6966e10119b2d071b03e1413f">mrpt::system::tpLow</a> = -1, <a class="el" href="group__mrpt__thread.html#gga37334359dc65d0cbef086685c837d27fa243a1b412b7e45a03e20a29929f8623e">mrpt::system::tpNormal</a> = 0, <br/>   <a class="el" href="group__mrpt__thread.html#gga37334359dc65d0cbef086685c837d27fa38bb74f11a1213377c6ee7f353df5db9">mrpt::system::tpHigh</a> = 1, <a class="el" href="group__mrpt__thread.html#gga37334359dc65d0cbef086685c837d27fadc1841e96aacf7d7facd67c800db8fea">mrpt::system::tpHigher</a> = 2, <a class="el" href="group__mrpt__thread.html#gga37334359dc65d0cbef086685c837d27fa728be646684f5ed4faf4ec507e3c9bcd">mrpt::system::tpHighest</a> = 15 <br/> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The type for cross-platform thread priorities. <a href="group__mrpt__thread.html#ga37334359dc65d0cbef086685c837d27f">More...</a><br/></td></tr> <tr><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">TThreadHandle </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga336f5607e34b84bc7ac208068aa8e51e">mrpt::system::createThread</a> (void(*func)(T), T param)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new thread from a function (or static method) with one generic parameter. <a href="#ga336f5607e34b84bc7ac208068aa8e51e"></a><br/></td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">TThreadHandle </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga81d1604616b261ab0b5536bcf6657f03">mrpt::system::createThreadRef</a> (void(*func)(T &), T &param)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">TThreadHandle </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#gac7a010553c47446af4b7ab7b1abf5a74">mrpt::system::createThread</a> (void(*func)(void))</td></tr> <tr><td class="memTemplParams" colspan="2">template<typename CLASS , typename PARAM > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">TThreadHandle </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga04ca9cd3d32cc923c6fd4e42fc196e85">mrpt::system::createThreadFromObjectMethod</a> (CLASS *obj, void(CLASS::*func)(PARAM), PARAM param)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new thread running a non-static method (so it will have access to "this") from another method of the same class - with one generic parameter. <a href="#ga04ca9cd3d32cc923c6fd4e42fc196e85"></a><br/></td></tr> <tr><td class="memTemplParams" colspan="2">template<typename CLASS , typename PARAM > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">TThreadHandle </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga69b2eb14aae15372652e1600b192f74e">mrpt::system::createThreadFromObjectMethodRef</a> (CLASS *obj, void(CLASS::*func)(PARAM), PARAM &param)</td></tr> <tr><td class="memTemplParams" colspan="2">template<typename CLASS > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">TThreadHandle </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#gab663a7d9d2285640bd5f2bbe473568cb">mrpt::system::createThreadFromObjectMethod</a> (CLASS *obj, void(CLASS::*func)(void))</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga723810cea7feb46c7391c245c5c5eec2">mrpt::system::joinThread</a> (const TThreadHandle &threadHandle)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Waits until the given thread ends. <a href="#ga723810cea7feb46c7391c245c5c5eec2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">unsigned long BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga826a49a3efec4b9e5bc76b3aff870a0a">mrpt::system::getCurrentThreadId</a> () MRPT_NO_THROWS</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the ID of the current thread. <a href="#ga826a49a3efec4b9e5bc76b3aff870a0a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">TThreadHandle BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga6c18cb71a8a0db7e757015dcab8bde75">mrpt::system::getCurrentThreadHandle</a> () MRPT_NO_THROWS</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a handle to the current thread. <a href="#ga6c18cb71a8a0db7e757015dcab8bde75"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#gabe2474d80e16d3e0a5f755a0cb486658">mrpt::system::exitThread</a> () MRPT_NO_THROWS</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Explicit close of the current (running) thread. <a href="#gabe2474d80e16d3e0a5f755a0cb486658"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga07d252d6de608a5cf3a4c1380c2ecdb1">mrpt::system::getCurrentThreadTimes</a> (time_t &creationTime, time_t &exitTime, double &cpuTime)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the creation and exit times of the current thread and its CPU time consumed. <a href="#ga07d252d6de608a5cf3a4c1380c2ecdb1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga9b12b6fd6d150e35bffd8a8ee8169cd8">mrpt::system::changeThreadPriority</a> (const TThreadHandle &threadHandle, TThreadPriority priority)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Change the priority of the given thread. <a href="#ga9b12b6fd6d150e35bffd8a8ee8169cd8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#gafbfb426dee2ea19f7c557b64ef60aa69">mrpt::system::terminateThread</a> (TThreadHandle &threadHandle) MRPT_NO_THROWS</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Terminate a thread, giving it no choice to delete objects, etc (use only as a last resource) <a href="#gafbfb426dee2ea19f7c557b64ef60aa69"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#gaa4698e4d733682e6ca4277bf6776e8fb">mrpt::system::changeCurrentProcessPriority</a> (TProcessPriority priority)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Change the priority of the given process (it applies to all the threads, plus independent modifiers for each thread). <a href="#gaa4698e4d733682e6ca4277bf6776e8fb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">unsigned int BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#ga2d962c5a835828188d209dc802623ca5">mrpt::system::getNumberOfProcessors</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of processors ("cores"), or 1 if it cannot be determined. <a href="#ga2d962c5a835828188d209dc802623ca5"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#gaade78123d72cf506a2c590ea26ec51ac">mrpt::system::sleep</a> (int time_ms) MRPT_NO_THROWS</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">An OS-independent method for sending the current thread to "sleep" for a given period of time. <a href="#gaade78123d72cf506a2c590ea26ec51ac"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__thread.html#gabc593b2c772be33e679b1a8311a1ca46">mrpt::system::launchProcess</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &command)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Executes the given command (which may contain a program + arguments), and waits until it finishes. <a href="#gabc593b2c772be33e679b1a8311a1ca46"></a><br/></td></tr> </table> <hr/><h2>Enumeration Type Documentation</h2> <a class="anchor" id="ga8c2faa8d1ee370745e9f2c89a417bfa7"></a><!-- doxytag: member="mrpt::system::TProcessPriority" ref="ga8c2faa8d1ee370745e9f2c89a417bfa7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="group__mrpt__thread.html#ga8c2faa8d1ee370745e9f2c89a417bfa7">mrpt::system::TProcessPriority</a></td> </tr> </table> </div> <div class="memdoc"> <p>The type for cross-platform process (application) priorities. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#gaa4698e4d733682e6ca4277bf6776e8fb" title="Change the priority of the given process (it applies to all the threads, plus independent modifiers f...">changeCurrentProcessPriority</a> </dd></dl> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="gga8c2faa8d1ee370745e9f2c89a417bfa7a11576a4e0680e8495b63a94fa985abfc"></a><!-- doxytag: member="ppIdle" ref="gga8c2faa8d1ee370745e9f2c89a417bfa7a11576a4e0680e8495b63a94fa985abfc" args="" -->ppIdle</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga8c2faa8d1ee370745e9f2c89a417bfa7ad46800cfc911ac0aeb26f404f1a9e878"></a><!-- doxytag: member="ppNormal" ref="gga8c2faa8d1ee370745e9f2c89a417bfa7ad46800cfc911ac0aeb26f404f1a9e878" args="" -->ppNormal</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga8c2faa8d1ee370745e9f2c89a417bfa7a192fc163166ceb14848bd98f1bd85fb4"></a><!-- doxytag: member="ppHigh" ref="gga8c2faa8d1ee370745e9f2c89a417bfa7a192fc163166ceb14848bd98f1bd85fb4" args="" -->ppHigh</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga8c2faa8d1ee370745e9f2c89a417bfa7a14f9bd2a1ce9ee2f9a12efba60b29fbb"></a><!-- doxytag: member="ppVeryHigh" ref="gga8c2faa8d1ee370745e9f2c89a417bfa7a14f9bd2a1ce9ee2f9a12efba60b29fbb" args="" -->ppVeryHigh</em> </td><td> </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="threads_8h_source.html#l00089">89</a> of file <a class="el" href="threads_8h_source.html">threads.h</a>.</p> </div> </div> <a class="anchor" id="ga37334359dc65d0cbef086685c837d27f"></a><!-- doxytag: member="mrpt::system::TThreadPriority" ref="ga37334359dc65d0cbef086685c837d27f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="group__mrpt__thread.html#ga37334359dc65d0cbef086685c837d27f">mrpt::system::TThreadPriority</a></td> </tr> </table> </div> <div class="memdoc"> <p>The type for cross-platform thread priorities. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#ga9b12b6fd6d150e35bffd8a8ee8169cd8" title="Change the priority of the given thread.">changeThreadPriority</a> </dd></dl> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="gga37334359dc65d0cbef086685c837d27faae6a0fd19982e5399847a60d84c6a331"></a><!-- doxytag: member="tpLowests" ref="gga37334359dc65d0cbef086685c837d27faae6a0fd19982e5399847a60d84c6a331" args="" -->tpLowests</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga37334359dc65d0cbef086685c837d27fa3db6aa1cdd443d3e9a3720ab3359ad3c"></a><!-- doxytag: member="tpLower" ref="gga37334359dc65d0cbef086685c837d27fa3db6aa1cdd443d3e9a3720ab3359ad3c" args="" -->tpLower</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga37334359dc65d0cbef086685c837d27fa9948aeb6966e10119b2d071b03e1413f"></a><!-- doxytag: member="tpLow" ref="gga37334359dc65d0cbef086685c837d27fa9948aeb6966e10119b2d071b03e1413f" args="" -->tpLow</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga37334359dc65d0cbef086685c837d27fa243a1b412b7e45a03e20a29929f8623e"></a><!-- doxytag: member="tpNormal" ref="gga37334359dc65d0cbef086685c837d27fa243a1b412b7e45a03e20a29929f8623e" args="" -->tpNormal</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga37334359dc65d0cbef086685c837d27fa38bb74f11a1213377c6ee7f353df5db9"></a><!-- doxytag: member="tpHigh" ref="gga37334359dc65d0cbef086685c837d27fa38bb74f11a1213377c6ee7f353df5db9" args="" -->tpHigh</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga37334359dc65d0cbef086685c837d27fadc1841e96aacf7d7facd67c800db8fea"></a><!-- doxytag: member="tpHigher" ref="gga37334359dc65d0cbef086685c837d27fadc1841e96aacf7d7facd67c800db8fea" args="" -->tpHigher</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga37334359dc65d0cbef086685c837d27fa728be646684f5ed4faf4ec507e3c9bcd"></a><!-- doxytag: member="tpHighest" ref="gga37334359dc65d0cbef086685c837d27fa728be646684f5ed4faf4ec507e3c9bcd" args="" -->tpHighest</em> </td><td> </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="threads_8h_source.html#l00099">99</a> of file <a class="el" href="threads_8h_source.html">threads.h</a>.</p> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="gaa4698e4d733682e6ca4277bf6776e8fb"></a><!-- doxytag: member="mrpt::system::changeCurrentProcessPriority" ref="gaa4698e4d733682e6ca4277bf6776e8fb" args="(TProcessPriority priority)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BASE_IMPEXP mrpt::system::changeCurrentProcessPriority </td> <td>(</td> <td class="paramtype">TProcessPriority </td> <td class="paramname"><em>priority</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Change the priority of the given process (it applies to all the threads, plus independent modifiers for each thread). </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#ga336f5607e34b84bc7ac208068aa8e51e" title="Creates a new thread from a function (or static method) with one generic parameter.">createThread</a>, <a class="el" href="group__mrpt__thread.html#ga9b12b6fd6d150e35bffd8a8ee8169cd8" title="Change the priority of the given thread.">changeThreadPriority</a> </dd></dl> </div> </div> <a class="anchor" id="ga9b12b6fd6d150e35bffd8a8ee8169cd8"></a><!-- doxytag: member="mrpt::system::changeThreadPriority" ref="ga9b12b6fd6d150e35bffd8a8ee8169cd8" args="(const TThreadHandle &threadHandle, TThreadPriority priority)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BASE_IMPEXP mrpt::system::changeThreadPriority </td> <td>(</td> <td class="paramtype">const TThreadHandle & </td> <td class="paramname"><em>threadHandle</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">TThreadPriority </td> <td class="paramname"><em>priority</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Change the priority of the given thread. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#ga336f5607e34b84bc7ac208068aa8e51e" title="Creates a new thread from a function (or static method) with one generic parameter.">createThread</a>, <a class="el" href="group__mrpt__thread.html#gaa4698e4d733682e6ca4277bf6776e8fb" title="Change the priority of the given process (it applies to all the threads, plus independent modifiers f...">changeCurrentProcessPriority</a> </dd></dl> </div> </div> <a class="anchor" id="ga336f5607e34b84bc7ac208068aa8e51e"></a><!-- doxytag: member="mrpt::system::createThread" ref="ga336f5607e34b84bc7ac208068aa8e51e" args="(void(*func)(T), T param)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T > </div> <table class="memname"> <tr> <td class="memname">TThreadHandle mrpt::system::createThread </td> <td>(</td> <td class="paramtype">void(*)(T) </td> <td class="paramname"><em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">T </td> <td class="paramname"><em>param</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a new thread from a function (or static method) with one generic parameter. </p> <p>This function creates, and start, a new thread running some code given by a function. The thread function should end by returning as normal. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">func</td><td>The function with the code to run in the thread. </td></tr> <tr><td class="paramname">param</td><td>The parameter to be passed to the new thread function. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>A structure that represents the thread (it contains its ID and, in Windows, its HANDLE). </dd></dl> <dl><dt><b>Exceptions:</b></dt><dd> <table class="exception"> <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>If the operation fails </td></tr> </table> </dd> </dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#ga04ca9cd3d32cc923c6fd4e42fc196e85" title="Creates a new thread running a non-static method (so it will have access to "this") from another meth...">createThreadFromObjectMethod</a>, <a class="el" href="group__mrpt__thread.html#ga723810cea7feb46c7391c245c5c5eec2" title="Waits until the given thread ends.">joinThread</a>, <a class="el" href="group__mrpt__thread.html#ga9b12b6fd6d150e35bffd8a8ee8169cd8" title="Change the priority of the given thread.">changeThreadPriority</a> </dd></dl> <p>Definition at line <a class="el" href="threads_8h_source.html#l00200">200</a> of file <a class="el" href="threads_8h_source.html">threads.h</a>.</p> <p>References <a class="el" href="threads_8h_source.html#l00122">mrpt::system::detail::ThreadCreateFunctor::createThread()</a>.</p> </div> </div> <a class="anchor" id="gac7a010553c47446af4b7ab7b1abf5a74"></a><!-- doxytag: member="mrpt::system::createThread" ref="gac7a010553c47446af4b7ab7b1abf5a74" args="(void(*func)(void))" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">TThreadHandle mrpt::system::createThread </td> <td>(</td> <td class="paramtype">void(*)(void) </td> <td class="paramname"><em>func</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> <p>Definition at line <a class="el" href="threads_8h_source.html#l00208">208</a> of file <a class="el" href="threads_8h_source.html">threads.h</a>.</p> <p>References <a class="el" href="threads_8h_source.html#l00145">mrpt::system::detail::ThreadCreateFunctorNoParams::createThread()</a>.</p> </div> </div> <a class="anchor" id="ga04ca9cd3d32cc923c6fd4e42fc196e85"></a><!-- doxytag: member="mrpt::system::createThreadFromObjectMethod" ref="ga04ca9cd3d32cc923c6fd4e42fc196e85" args="(CLASS *obj, void(CLASS::*func)(PARAM), PARAM param)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename CLASS , typename PARAM > </div> <table class="memname"> <tr> <td class="memname">TThreadHandle mrpt::system::createThreadFromObjectMethod </td> <td>(</td> <td class="paramtype">CLASS * </td> <td class="paramname"><em>obj</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void(CLASS::*)(PARAM) </td> <td class="paramname"><em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">PARAM </td> <td class="paramname"><em>param</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a new thread running a non-static method (so it will have access to "this") from another method of the same class - with one generic parameter. </p> <p>This function creates, and start, a new thread running some code given by a function. The thread function should end by returning as normal. Example of usage:</p> <div class="fragment"><pre class="fragment"> <span class="keyword">class </span>MyClass { <span class="keyword">public</span>: <span class="keywordtype">void</span> myThread(<span class="keywordtype">int</span> n); <span class="keywordtype">void</span> someMethod() { <a class="code" href="group__mrpt__thread.html#ga04ca9cd3d32cc923c6fd4e42fc196e85" title="Creates a new thread running a non-static method (so it will have access to "this") from another meth...">createThreadFromObjectMethod</a>(<span class="keyword">this</span>, &MyClass::myThread, 123 ); .... } }; </pre></div><dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">func</td><td>The function with the code to run in the thread. </td></tr> <tr><td class="paramname">param</td><td>The parameter to be passed to the new thread function. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>A structure that represents the thread (it contains its ID and, in Windows, its HANDLE). </dd></dl> <dl><dt><b>Exceptions:</b></dt><dd> <table class="exception"> <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>If the operation fails </td></tr> </table> </dd> </dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#ga336f5607e34b84bc7ac208068aa8e51e" title="Creates a new thread from a function (or static method) with one generic parameter.">createThread</a>, <a class="el" href="group__mrpt__thread.html#ga723810cea7feb46c7391c245c5c5eec2" title="Waits until the given thread ends.">joinThread</a>, <a class="el" href="group__mrpt__thread.html#ga9b12b6fd6d150e35bffd8a8ee8169cd8" title="Change the priority of the given thread.">changeThreadPriority</a> </dd></dl> <p>Definition at line <a class="el" href="threads_8h_source.html#l00235">235</a> of file <a class="el" href="threads_8h_source.html">threads.h</a>.</p> <p>References <a class="el" href="threads_8h_source.html#l00165">mrpt::system::detail::ThreadCreateObjectFunctor::createThread()</a>.</p> </div> </div> <a class="anchor" id="gab663a7d9d2285640bd5f2bbe473568cb"></a><!-- doxytag: member="mrpt::system::createThreadFromObjectMethod" ref="gab663a7d9d2285640bd5f2bbe473568cb" args="(CLASS *obj, void(CLASS::*func)(void))" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename CLASS > </div> <table class="memname"> <tr> <td class="memname">TThreadHandle mrpt::system::createThreadFromObjectMethod </td> <td>(</td> <td class="paramtype">CLASS * </td> <td class="paramname"><em>obj</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void(CLASS::*)(void) </td> <td class="paramname"><em>func</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> <p>Definition at line <a class="el" href="threads_8h_source.html#l00245">245</a> of file <a class="el" href="threads_8h_source.html">threads.h</a>.</p> <p>References <a class="el" href="threads_8h_source.html#l00184">mrpt::system::detail::ThreadCreateObjectFunctorNoParams::createThread()</a>.</p> </div> </div> <a class="anchor" id="ga69b2eb14aae15372652e1600b192f74e"></a><!-- doxytag: member="mrpt::system::createThreadFromObjectMethodRef" ref="ga69b2eb14aae15372652e1600b192f74e" args="(CLASS *obj, void(CLASS::*func)(PARAM), PARAM &param)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename CLASS , typename PARAM > </div> <table class="memname"> <tr> <td class="memname">TThreadHandle mrpt::system::createThreadFromObjectMethodRef </td> <td>(</td> <td class="paramtype">CLASS * </td> <td class="paramname"><em>obj</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void(CLASS::*)(PARAM) </td> <td class="paramname"><em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">PARAM & </td> <td class="paramname"><em>param</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> <p>Definition at line <a class="el" href="threads_8h_source.html#l00240">240</a> of file <a class="el" href="threads_8h_source.html">threads.h</a>.</p> <p>References <a class="el" href="threads_8h_source.html#l00165">mrpt::system::detail::ThreadCreateObjectFunctor::createThread()</a>.</p> </div> </div> <a class="anchor" id="ga81d1604616b261ab0b5536bcf6657f03"></a><!-- doxytag: member="mrpt::system::createThreadRef" ref="ga81d1604616b261ab0b5536bcf6657f03" args="(void(*func)(T &), T &param)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T > </div> <table class="memname"> <tr> <td class="memname">TThreadHandle mrpt::system::createThreadRef </td> <td>(</td> <td class="paramtype">void(*)(T &) </td> <td class="paramname"><em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">T & </td> <td class="paramname"><em>param</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> <p>Definition at line <a class="el" href="threads_8h_source.html#l00204">204</a> of file <a class="el" href="threads_8h_source.html">threads.h</a>.</p> <p>References <a class="el" href="threads_8h_source.html#l00122">mrpt::system::detail::ThreadCreateFunctor::createThread()</a>.</p> </div> </div> <a class="anchor" id="gabe2474d80e16d3e0a5f755a0cb486658"></a><!-- doxytag: member="mrpt::system::exitThread" ref="gabe2474d80e16d3e0a5f755a0cb486658" args="() MRPT_NO_THROWS" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BASE_IMPEXP mrpt::system::exitThread </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Explicit close of the current (running) thread. </p> <p>Do not use normally, it's better just to return from the running thread function. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#ga336f5607e34b84bc7ac208068aa8e51e" title="Creates a new thread from a function (or static method) with one generic parameter.">createThread</a> </dd></dl> </div> </div> <a class="anchor" id="ga6c18cb71a8a0db7e757015dcab8bde75"></a><!-- doxytag: member="mrpt::system::getCurrentThreadHandle" ref="ga6c18cb71a8a0db7e757015dcab8bde75" args="() MRPT_NO_THROWS" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">TThreadHandle BASE_IMPEXP mrpt::system::getCurrentThreadHandle </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns a handle to the current thread. </p> </div> </div> <a class="anchor" id="ga826a49a3efec4b9e5bc76b3aff870a0a"></a><!-- doxytag: member="mrpt::system::getCurrentThreadId" ref="ga826a49a3efec4b9e5bc76b3aff870a0a" args="() MRPT_NO_THROWS" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned long BASE_IMPEXP mrpt::system::getCurrentThreadId </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the ID of the current thread. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#ga6c18cb71a8a0db7e757015dcab8bde75" title="Returns a handle to the current thread.">getCurrentThreadHandle</a> </dd></dl> </div> </div> <a class="anchor" id="ga07d252d6de608a5cf3a4c1380c2ecdb1"></a><!-- doxytag: member="mrpt::system::getCurrentThreadTimes" ref="ga07d252d6de608a5cf3a4c1380c2ecdb1" args="(time_t &creationTime, time_t &exitTime, double &cpuTime)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BASE_IMPEXP mrpt::system::getCurrentThreadTimes </td> <td>(</td> <td class="paramtype">time_t & </td> <td class="paramname"><em>creationTime</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">time_t & </td> <td class="paramname"><em>exitTime</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double & </td> <td class="paramname"><em>cpuTime</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the creation and exit times of the current thread and its CPU time consumed. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">creationTime</td><td>The creation time of the thread. </td></tr> <tr><td class="paramname">exitTime</td><td>The exit time of the thread, or undefined if it is still running. </td></tr> <tr><td class="paramname">cpuTime</td><td>The CPU time consumed by the thread, in seconds. </td></tr> </table> </dd> </dl> <dl><dt><b>Exceptions:</b></dt><dd> <table class="exception"> <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>If the operation fails </td></tr> </table> </dd> </dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#ga6c18cb71a8a0db7e757015dcab8bde75" title="Returns a handle to the current thread.">getCurrentThreadHandle</a>, <a class="el" href="group__mrpt__thread.html#ga826a49a3efec4b9e5bc76b3aff870a0a" title="Returns the ID of the current thread.">getCurrentThreadId</a>, <a class="el" href="group__mrpt__thread.html#ga336f5607e34b84bc7ac208068aa8e51e" title="Creates a new thread from a function (or static method) with one generic parameter.">createThread</a> </dd></dl> </div> </div> <a class="anchor" id="ga2d962c5a835828188d209dc802623ca5"></a><!-- doxytag: member="mrpt::system::getNumberOfProcessors" ref="ga2d962c5a835828188d209dc802623ca5" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned int BASE_IMPEXP mrpt::system::getNumberOfProcessors </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Return the number of processors ("cores"), or 1 if it cannot be determined. </p> </div> </div> <a class="anchor" id="ga723810cea7feb46c7391c245c5c5eec2"></a><!-- doxytag: member="mrpt::system::joinThread" ref="ga723810cea7feb46c7391c245c5c5eec2" args="(const TThreadHandle &threadHandle)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BASE_IMPEXP mrpt::system::joinThread </td> <td>(</td> <td class="paramtype">const TThreadHandle & </td> <td class="paramname"><em>threadHandle</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Waits until the given thread ends. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__mrpt__thread.html#ga336f5607e34b84bc7ac208068aa8e51e" title="Creates a new thread from a function (or static method) with one generic parameter.">createThread</a> </dd></dl> </div> </div> <a class="anchor" id="gabc593b2c772be33e679b1a8311a1ca46"></a><!-- doxytag: member="mrpt::system::launchProcess" ref="gabc593b2c772be33e679b1a8311a1ca46" args="(const std::string &command)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool BASE_IMPEXP mrpt::system::launchProcess </td> <td>(</td> <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> & </td> <td class="paramname"><em>command</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Executes the given command (which may contain a program + arguments), and waits until it finishes. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>false on any error, true otherwise </dd></dl> </div> </div> <a class="anchor" id="gaade78123d72cf506a2c590ea26ec51ac"></a><!-- doxytag: member="mrpt::system::sleep" ref="gaade78123d72cf506a2c590ea26ec51ac" args="(int time_ms) MRPT_NO_THROWS" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BASE_IMPEXP mrpt::system::sleep </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>time_ms</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>An OS-independent method for sending the current thread to "sleep" for a given period of time. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">time_ms</td><td>The sleep period, in miliseconds. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="gafbfb426dee2ea19f7c557b64ef60aa69"></a><!-- doxytag: member="mrpt::system::terminateThread" ref="gafbfb426dee2ea19f7c557b64ef60aa69" args="(TThreadHandle &threadHandle) MRPT_NO_THROWS" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BASE_IMPEXP mrpt::system::terminateThread </td> <td>(</td> <td class="paramtype">TThreadHandle & </td> <td class="paramname"><em>threadHandle</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Terminate a thread, giving it no choice to delete objects, etc (use only as a last resource) </p> </div> </div> </div> <br><hr><br> <table border="0" width="100%"> <tr> <td> Page generated by <a href="http://www.doxygen.org" target="_blank">Doxygen 1.7.5</a> for MRPT 0.9.5 SVN: at Sun Sep 25 17:20:18 UTC 2011</td><td></td> <td width="100"> </td> <td width="150"> </td></tr> </table> </body></html>