<!-- This comment will put IE 6, 7 and 8 in quirks mode --> <!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>Apache Portable Runtime Utility Library: Thread Pool routines</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javaScript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.6.3 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div class="navigation" id="top"> <div class="tabs"> <ul> <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>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <img id="MSearchSelect" src="search/search.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </div> </li> </ul> </div> </div> <div class="contents"> <h1>Thread Pool routines<br/> <small> [<a class="el" href="group___a_p_r___util.html">APR Utility Functions</a>]</small> </h1><table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga312691aaa41f45820e13c2566a4c6780"></a><!-- doxytag: member="APR_Util_TP::APR_THREAD_TASK_PRIORITY_LOWEST" ref="ga312691aaa41f45820e13c2566a4c6780" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>APR_THREAD_TASK_PRIORITY_LOWEST</b> 0</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga19879c994e9a71e9954e580a179b62c1"></a><!-- doxytag: member="APR_Util_TP::APR_THREAD_TASK_PRIORITY_LOW" ref="ga19879c994e9a71e9954e580a179b62c1" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>APR_THREAD_TASK_PRIORITY_LOW</b> 63</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga84d2ac8fa8a538661715b0d2e2736cb1"></a><!-- doxytag: member="APR_Util_TP::APR_THREAD_TASK_PRIORITY_NORMAL" ref="ga84d2ac8fa8a538661715b0d2e2736cb1" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>APR_THREAD_TASK_PRIORITY_NORMAL</b> 127</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga289d5e1346b5807b43db9ea7d4ea5c17"></a><!-- doxytag: member="APR_Util_TP::APR_THREAD_TASK_PRIORITY_HIGH" ref="ga289d5e1346b5807b43db9ea7d4ea5c17" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>APR_THREAD_TASK_PRIORITY_HIGH</b> 191</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5fa01e4e210270d119382a80aae13d1d"></a><!-- doxytag: member="APR_Util_TP::APR_THREAD_TASK_PRIORITY_HIGHEST" ref="ga5fa01e4e210270d119382a80aae13d1d" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>APR_THREAD_TASK_PRIORITY_HIGHEST</b> 255</td></tr> <tr><td colspan="2"><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef struct apr_thread_pool </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a></td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga9c4351f2f93d223c159c1f8e5481830e">apr_thread_pool_create</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> **me, apr_size_t init_threads, apr_size_t max_threads, apr_pool_t *pool)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gab06b4fdfc684c88781abf201d53a44eb">apr_thread_pool_destroy</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gad66fb92679a8f456ff8e8ea1629eb041">apr_thread_pool_push</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me, apr_thread_start_t func, void *param, apr_byte_t priority, void *owner)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gaa79df50c650442b8d39e169f4e422d3b">apr_thread_pool_schedule</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me, apr_thread_start_t func, void *param, apr_interval_time_t time, void *owner)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga9acb6218820184f0617eecf56f0d3d84">apr_thread_pool_top</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me, apr_thread_start_t func, void *param, apr_byte_t priority, void *owner)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gaee3d7332cf2591f42472e8be0bcbff87">apr_thread_pool_tasks_cancel</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me, void *owner)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga4f628cbec0365bb39be715a3c7ff0ec3">apr_thread_pool_tasks_count</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gac0324b95f6b61dbfb184cbe84c541b42">apr_thread_pool_scheduled_tasks_count</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga9a2642a5a61df9560da438e818d5fad3">apr_thread_pool_threads_count</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gaf839cda931928964f450e3a17d153b24">apr_thread_pool_busy_count</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gae6c5b87d1fee7150f74baa1008cb00c0">apr_thread_pool_idle_count</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga07c5e4dca589ff024e9adfc8f818c481">apr_thread_pool_idle_max_set</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me, apr_size_t cnt)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gaab5c9c8afc46793ea5c413edfc9ef46e">apr_thread_pool_tasks_run_count</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga5eda07fb7fac1b4c4165137f34c5c31c">apr_thread_pool_tasks_high_count</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gab6dcdaa6129caf35fa370e694a67ff08">apr_thread_pool_threads_high_count</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gafcf0a761a77b2a27fc043d650606c122">apr_thread_pool_threads_idle_timeout_count</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga6dd7fdcaac5cb2848aecd2ee1426d41e">apr_thread_pool_idle_max_get</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gaa352b6337b31ebab796b604240a907e9">apr_thread_pool_thread_max_set</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me, apr_size_t cnt)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_interval_time_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga382b90c482d39184b2a80157f64166ec">apr_thread_pool_idle_wait_set</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me, apr_interval_time_t timeout)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_interval_time_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga6ef255c2d556fa757e9b78c2745c9bac">apr_thread_pool_idle_wait_get</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gaca755ea05976c5e1b782dcf40a1ef443">apr_thread_pool_thread_max_get</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga1c35f1bd809dde4300f4a3f77026f446">apr_thread_pool_threshold_set</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me, apr_size_t val)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#ga38f4ad8e384cde0e9d32867031c7a935">apr_thread_pool_threshold_get</a> (<a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> *me)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">apr_status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___t_p.html#gaefbaa0f765567e8e5a79adaaf346755f">apr_thread_pool_task_owner_get</a> (apr_thread_t *thd, void **owner)</td></tr> </table> <hr/><h2>Typedef Documentation</h2> <a class="anchor" id="gab31b68a03a0d5eec3e1879c253d3b620"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_t" ref="gab31b68a03a0d5eec3e1879c253d3b620" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct apr_thread_pool <a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>Opaque Thread Pool structure. </p> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="gaf839cda931928964f450e3a17d153b24"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_busy_count" ref="gaf839cda931928964f450e3a17d153b24" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_busy_count </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the current number of busy threads </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Number of busy threads </dd></dl> </div> </div> <a class="anchor" id="ga9c4351f2f93d223c159c1f8e5481830e"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_create" ref="ga9c4351f2f93d223c159c1f8e5481830e" args="(apr_thread_pool_t **me, apr_size_t init_threads, apr_size_t max_threads, apr_pool_t *pool)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_status_t apr_thread_pool_create </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> ** </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_size_t </td> <td class="paramname"> <em>init_threads</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_size_t </td> <td class="paramname"> <em>max_threads</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_pool_t * </td> <td class="paramname"> <em>pool</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a thread pool </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The pointer in which to return the newly created apr_thread_pool object, or NULL if thread pool creation fails. </td></tr> <tr><td valign="top"></td><td valign="top"><em>init_threads</em> </td><td>The number of threads to be created initially, this number will also be used as the initial value for the maximum number of idle threads. </td></tr> <tr><td valign="top"></td><td valign="top"><em>max_threads</em> </td><td>The maximum number of threads that can be created </td></tr> <tr><td valign="top"></td><td valign="top"><em>pool</em> </td><td>The pool to use </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the thread pool was created successfully. Otherwise, the error code. </dd></dl> </div> </div> <a class="anchor" id="gab06b4fdfc684c88781abf201d53a44eb"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_destroy" ref="gab06b4fdfc684c88781abf201d53a44eb" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_status_t apr_thread_pool_destroy </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Destroy the thread pool and stop all the threads </p> <dl class="return"><dt><b>Returns:</b></dt><dd>APR_SUCCESS if all threads are stopped. </dd></dl> </div> </div> <a class="anchor" id="gae6c5b87d1fee7150f74baa1008cb00c0"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_idle_count" ref="gae6c5b87d1fee7150f74baa1008cb00c0" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_idle_count </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the current number of idle threads </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Number of idle threads </dd></dl> </div> </div> <a class="anchor" id="ga6dd7fdcaac5cb2848aecd2ee1426d41e"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_idle_max_get" ref="ga6dd7fdcaac5cb2848aecd2ee1426d41e" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_idle_max_get </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Access function for the maximum number of idle threads </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The current maximum number </dd></dl> </div> </div> <a class="anchor" id="ga07c5e4dca589ff024e9adfc8f818c481"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_idle_max_set" ref="ga07c5e4dca589ff024e9adfc8f818c481" args="(apr_thread_pool_t *me, apr_size_t cnt)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_idle_max_set </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_size_t </td> <td class="paramname"> <em>cnt</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Access function for the maximum number of idle threads. Number of current idle threads will be reduced to the new limit. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> <tr><td valign="top"></td><td valign="top"><em>cnt</em> </td><td>The number </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The number of threads that were stopped. </dd></dl> </div> </div> <a class="anchor" id="ga6ef255c2d556fa757e9b78c2745c9bac"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_idle_wait_get" ref="ga6ef255c2d556fa757e9b78c2745c9bac" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_interval_time_t apr_thread_pool_idle_wait_get </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Access function for the maximum wait time (in microseconds) of an idling thread that exceeds the maximum number of idling threads </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The current maximum wait time </dd></dl> </div> </div> <a class="anchor" id="ga382b90c482d39184b2a80157f64166ec"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_idle_wait_set" ref="ga382b90c482d39184b2a80157f64166ec" args="(apr_thread_pool_t *me, apr_interval_time_t timeout)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_interval_time_t apr_thread_pool_idle_wait_set </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_interval_time_t </td> <td class="paramname"> <em>timeout</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Access function for the maximum wait time (in microseconds) of an idling thread that exceeds the maximum number of idling threads. A non-zero value allows for the reaping of idling threads to shrink over time. Which helps reduce thrashing. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> <tr><td valign="top"></td><td valign="top"><em>timeout</em> </td><td>The number of microseconds an idle thread should wait till it reaps itself </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The original maximum wait time </dd></dl> </div> </div> <a class="anchor" id="gad66fb92679a8f456ff8e8ea1629eb041"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_push" ref="gad66fb92679a8f456ff8e8ea1629eb041" args="(apr_thread_pool_t *me, apr_thread_start_t func, void *param, apr_byte_t priority, void *owner)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_status_t apr_thread_pool_push </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_thread_start_t </td> <td class="paramname"> <em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>param</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_byte_t </td> <td class="paramname"> <em>priority</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>owner</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Schedule a task to the bottom of the tasks of same priority. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>The task function </td></tr> <tr><td valign="top"></td><td valign="top"><em>param</em> </td><td>The parameter for the task function </td></tr> <tr><td valign="top"></td><td valign="top"><em>priority</em> </td><td>The priority of the task. </td></tr> <tr><td valign="top"></td><td valign="top"><em>owner</em> </td><td>Owner of this task. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the task had been scheduled successfully </dd></dl> </div> </div> <a class="anchor" id="gaa79df50c650442b8d39e169f4e422d3b"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_schedule" ref="gaa79df50c650442b8d39e169f4e422d3b" args="(apr_thread_pool_t *me, apr_thread_start_t func, void *param, apr_interval_time_t time, void *owner)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_status_t apr_thread_pool_schedule </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_thread_start_t </td> <td class="paramname"> <em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>param</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_interval_time_t </td> <td class="paramname"> <em>time</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>owner</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Schedule a task to be run after a delay </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>The task function </td></tr> <tr><td valign="top"></td><td valign="top"><em>param</em> </td><td>The parameter for the task function </td></tr> <tr><td valign="top"></td><td valign="top"><em>time</em> </td><td>Time in microseconds </td></tr> <tr><td valign="top"></td><td valign="top"><em>owner</em> </td><td>Owner of this task. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the task had been scheduled successfully </dd></dl> </div> </div> <a class="anchor" id="gac0324b95f6b61dbfb184cbe84c541b42"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_scheduled_tasks_count" ref="gac0324b95f6b61dbfb184cbe84c541b42" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_scheduled_tasks_count </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the current number of scheduled tasks waiting in the queue </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Number of scheduled tasks in the queue </dd></dl> </div> </div> <a class="anchor" id="gaefbaa0f765567e8e5a79adaaf346755f"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_task_owner_get" ref="gaefbaa0f765567e8e5a79adaaf346755f" args="(apr_thread_t *thd, void **owner)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_status_t apr_thread_pool_task_owner_get </td> <td>(</td> <td class="paramtype">apr_thread_t * </td> <td class="paramname"> <em>thd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void ** </td> <td class="paramname"> <em>owner</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get owner of the task currently been executed by the thread. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>thd</em> </td><td>The thread is executing a task </td></tr> <tr><td valign="top"></td><td valign="top"><em>owner</em> </td><td>Pointer to receive owner of the task. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the owner is retrieved successfully </dd></dl> </div> </div> <a class="anchor" id="gaee3d7332cf2591f42472e8be0bcbff87"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_tasks_cancel" ref="gaee3d7332cf2591f42472e8be0bcbff87" args="(apr_thread_pool_t *me, void *owner)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_status_t apr_thread_pool_tasks_cancel </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>owner</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Cancel tasks submitted by the owner. If there is any task from the owner that is currently running, the function will spin until the task finished. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> <tr><td valign="top"></td><td valign="top"><em>owner</em> </td><td>Owner of the task </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the task has been cancelled successfully </dd></dl> <dl class="note"><dt><b>Note:</b></dt><dd>The task function should not be calling cancel, otherwise the function may get stuck forever. The function assert if it detect such a case. </dd></dl> </div> </div> <a class="anchor" id="ga4f628cbec0365bb39be715a3c7ff0ec3"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_tasks_count" ref="ga4f628cbec0365bb39be715a3c7ff0ec3" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_tasks_count </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the current number of tasks waiting in the queue </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Number of tasks in the queue </dd></dl> </div> </div> <a class="anchor" id="ga5eda07fb7fac1b4c4165137f34c5c31c"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_tasks_high_count" ref="ga5eda07fb7fac1b4c4165137f34c5c31c" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_tasks_high_count </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get high water mark of the number of tasks waiting to run </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>High water mark of tasks waiting to run </dd></dl> </div> </div> <a class="anchor" id="gaab5c9c8afc46793ea5c413edfc9ef46e"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_tasks_run_count" ref="gaab5c9c8afc46793ea5c413edfc9ef46e" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_tasks_run_count </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get number of tasks that have run </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Number of tasks that have run </dd></dl> </div> </div> <a class="anchor" id="gaca755ea05976c5e1b782dcf40a1ef443"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_thread_max_get" ref="gaca755ea05976c5e1b782dcf40a1ef443" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_thread_max_get </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Access function for the maximum number of threads </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The current maximum number </dd></dl> </div> </div> <a class="anchor" id="gaa352b6337b31ebab796b604240a907e9"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_thread_max_set" ref="gaa352b6337b31ebab796b604240a907e9" args="(apr_thread_pool_t *me, apr_size_t cnt)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_thread_max_set </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_size_t </td> <td class="paramname"> <em>cnt</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Access function for the maximum number of threads. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> <tr><td valign="top"></td><td valign="top"><em>cnt</em> </td><td>Number of threads </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The original maximum number of threads </dd></dl> </div> </div> <a class="anchor" id="ga9a2642a5a61df9560da438e818d5fad3"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_threads_count" ref="ga9a2642a5a61df9560da438e818d5fad3" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_threads_count </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the current number of threads </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Total number of threads </dd></dl> </div> </div> <a class="anchor" id="gab6dcdaa6129caf35fa370e694a67ff08"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_threads_high_count" ref="gab6dcdaa6129caf35fa370e694a67ff08" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_threads_high_count </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get high water mark of the number of threads </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>High water mark of threads in thread pool </dd></dl> </div> </div> <a class="anchor" id="gafcf0a761a77b2a27fc043d650606c122"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_threads_idle_timeout_count" ref="gafcf0a761a77b2a27fc043d650606c122" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_threads_idle_timeout_count </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the number of idle threads that were destroyed after timing out </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Number of idle threads that timed out </dd></dl> </div> </div> <a class="anchor" id="ga38f4ad8e384cde0e9d32867031c7a935"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_threshold_get" ref="ga38f4ad8e384cde0e9d32867031c7a935" args="(apr_thread_pool_t *me)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_threshold_get </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Access function for the threshold of tasks in queue to trigger a new thread. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The current threshold </dd></dl> </div> </div> <a class="anchor" id="ga1c35f1bd809dde4300f4a3f77026f446"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_threshold_set" ref="ga1c35f1bd809dde4300f4a3f77026f446" args="(apr_thread_pool_t *me, apr_size_t val)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_size_t apr_thread_pool_threshold_set </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_size_t </td> <td class="paramname"> <em>val</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Access function for the threshold of tasks in queue to trigger a new thread. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> <tr><td valign="top"></td><td valign="top"><em>cnt</em> </td><td>The new threshold </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The original threshold </dd></dl> </div> </div> <a class="anchor" id="ga9acb6218820184f0617eecf56f0d3d84"></a><!-- doxytag: member="apr_thread_pool.h::apr_thread_pool_top" ref="ga9acb6218820184f0617eecf56f0d3d84" args="(apr_thread_pool_t *me, apr_thread_start_t func, void *param, apr_byte_t priority, void *owner)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">apr_status_t apr_thread_pool_top </td> <td>(</td> <td class="paramtype"><a class="el" href="group___a_p_r___util___t_p.html#gab31b68a03a0d5eec3e1879c253d3b620">apr_thread_pool_t</a> * </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_thread_start_t </td> <td class="paramname"> <em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>param</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_byte_t </td> <td class="paramname"> <em>priority</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>owner</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Schedule a task to the top of the tasks of same priority. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>The thread pool </td></tr> <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>The task function </td></tr> <tr><td valign="top"></td><td valign="top"><em>param</em> </td><td>The parameter for the task function </td></tr> <tr><td valign="top"></td><td valign="top"><em>priority</em> </td><td>The priority of the task. </td></tr> <tr><td valign="top"></td><td valign="top"><em>owner</em> </td><td>Owner of this task. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the task had been scheduled successfully </dd></dl> </div> </div> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Feb 1 12:19:48 2012 for Apache Portable Runtime Utility Library 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>