⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class_plugin_thread_pool_1_1_thread_chain.html

📁 用vc++写的一个简单的线程池的代码
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<!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>ThreadPool: PluginThreadPool::ThreadChain&lt; T &gt; Class Template Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.4.7 --><div class="tabs">  <ul>    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>    <li><a href="namespaces.html"><span>Namespaces</span></a></li>    <li id="current"><a href="classes.html"><span>Classes</span></a></li>    <li><a href="files.html"><span>Files</span></a></li>  </ul></div><div class="tabs">  <ul>    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>  </ul></div><div class="nav"><a class="el" href="namespace_plugin_thread_pool.html">PluginThreadPool</a>::<a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a></div><h1>PluginThreadPool::ThreadChain&lt; T &gt; Class Template Reference</h1><!-- doxytag: class="PluginThreadPool::ThreadChain" --><code>#include &lt;<a class="el" href="_thread_chain_8h-source.html">ThreadChain.h</a>&gt;</code><p>Collaboration diagram for PluginThreadPool::ThreadChain&lt; T &gt;:<p><center><img src="class_plugin_thread_pool_1_1_thread_chain__coll__graph.jpg" border="0" usemap="#_plugin_thread_pool_1_1_thread_chain_3_01_t_01_4__coll__map" alt="Collaboration graph"></center><center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_plugin_thread_pool_1_1_thread_chain-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#eb53c1e23394b2751909550448fae624">ThreadChain</a> (<a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a> *p, <a class="el" href="class_plugin_thread_pool_1_1_thread_pool.html">ThreadPool</a>&lt; T &gt; *pool)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The constructor which created the thread.  <a href="#eb53c1e23394b2751909550448fae624"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#67fd435e62ebf5d5a225270f2e336270">canHandle</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#313163d771692b7ce2873674fc4553c9">HandleRequest</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#7ae01cce8c7c6f9d63c124194bd9d883">HandleHungThreads</a> (<a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a>&lt; T &gt; *prev)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The method to handle the hung threads.  <a href="#7ae01cce8c7c6f9d63c124194bd9d883"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#e28a326e5c8e7e631e2c02f17bc8d02c">printChain</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">For diagnostics.  <a href="#e28a326e5c8e7e631e2c02f17bc8d02c"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#39ed823eaf29897d799d283daee04c63">GetNext</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the next object in the chain.  <a href="#39ed823eaf29897d799d283daee04c63"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#103d28f4e5269ac50c48450e8b4ba02e">IsHung</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#435db32c0943a54cfd703185fb62f759">ReleaseIdleThread</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#ec35c45936ab27aacf1f17a49962cbc1">AddRef</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reference couting  <a href="#ec35c45936ab27aacf1f17a49962cbc1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#0247af1e66ef2aa1152f7b6a81f32753">Release</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reference couting  <a href="#0247af1e66ef2aa1152f7b6a81f32753"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#f1aefaf34a1103cc7c0538f19db13faf">~ThreadChain</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">dtor  <a href="#f1aefaf34a1103cc7c0538f19db13faf"></a><br></td></tr><tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static UINT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#53ecf3b974adabbdf951bfcf73327314">HandleRequestProxy</a> (LPVOID param)</td></tr><tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#7a86f3702028dcfe97bec05d6152742c">ThreadChain</a> (const <a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a> &amp;)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#cd7237bdcacc3ab980d3a0d159ce9c36">operator=</a> (const <a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a> &amp;)</td></tr><tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#afa36db14f458aee323676f500e11ec8">next</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#7161bcf0e1166fbd59a86f303cb407a5">busy</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pointer to the next obj in the chain  <a href="#7161bcf0e1166fbd59a86f303cb407a5"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#37253f8bdfe3899c4fe09602008b41fb">starttime</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#796e3dca1d2286547e1e75095272ef64">lastactivetime</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">CWinThread *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#a63566f1062e3846fd000c6ed1d048af">m_winthread</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">HANDLE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#e042b57366986410ca9b29a216f868fb">g_Event</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#4048ea61e6e0196ae54cda274410af33">m_ref</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#c70c7a3540e9cdad3e7eac570df96315">threadId</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#5f2473093f1e10d70996f855887a94a0">deleteMe</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_plugin_thread_pool_1_1_thread_pool.html">ThreadPool</a>&lt; T &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#3dfa3c57d56981eae59af9acbb0ec1b6">threadpool</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">DWORD&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#ab45dae1f910885c22cebaa9f6e7feee">m_timeout</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pointer to the parent thread pool  <a href="#ab45dae1f910885c22cebaa9f6e7feee"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">HANDLE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#fe31064961fda989ca508ed4cd14294e">threadChkMutex</a></td></tr><tr><td colspan="2"><br><h2>Friends</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html#5d97748be7d69dcc44ef551ea35ef20f">ThreadPool</a></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2><h3>template&lt;typename T&gt;<br> class PluginThreadPool::ThreadChain&lt; T &gt;</h3>The <a class="el" href="class_plugin_thread_pool_1_1_thread_pool.html">ThreadPool</a> class creates a chain of <a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a> objects, each <a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a> owns a thread Design Pattern - Chain of Responsility + Modifications for threadpool <p><p>Definition at line <a class="el" href="_thread_chain_8h-source.html#l00030">30</a> of file <a class="el" href="_thread_chain_8h-source.html">ThreadChain.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2><a class="anchor" name="eb53c1e23394b2751909550448fae624"></a><!-- doxytag: member="PluginThreadPool::ThreadChain::ThreadChain" ref="eb53c1e23394b2751909550448fae624" args="(ThreadChain *p, ThreadPool&lt; T &gt; *pool)" --><div class="memitem"><div class="memproto"><div class="memtemplate">template&lt;typename T&gt; </div>      <table class="memname">        <tr>          <td class="memname"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">PluginThreadPool::ThreadChain</a>&lt; T &gt;::<a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a>           </td>          <td>(</td>          <td class="paramtype"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a>&lt; T &gt; *&nbsp;</td>          <td class="paramname"> <em>p</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype"><a class="el" href="class_plugin_thread_pool_1_1_thread_pool.html">ThreadPool</a>&lt; T &gt; *&nbsp;</td>          <td class="paramname"> <em>pool</em></td><td>&nbsp;</td>        </tr>        <tr>          <td></td>          <td>)</td>          <td></td><td></td><td width="100%"><code> [inline, explicit]</code></td>        </tr>      </table></div><div class="memdoc"><p>The constructor which created the thread. <p><p>Create an even in a non signalled state<p>Manually reset event<p>Create a thread ,where the work of calling the objects method is done<p>Increment the thread count, note threadpool acts like a controller <p>Definition at line <a class="el" href="_thread_chain_8h-source.html#l00036">36</a> of file <a class="el" href="_thread_chain_8h-source.html">ThreadChain.h</a>.<p>References <a class="el" href="_thread_chain_8h-source.html#l00316">PluginThreadPool::ThreadChain&lt; T &gt;::AddRef()</a>, <a class="el" href="_thread_chain_8h-source.html#l00362">PluginThreadPool::ThreadChain&lt; T &gt;::g_Event</a>, <a class="el" href="_thread_chain_8h-source.html#l00107">PluginThreadPool::ThreadChain&lt; T &gt;::HandleRequestProxy()</a>, <a class="el" href="_thread_chain_8h-source.html#l00361">PluginThreadPool::ThreadChain&lt; T &gt;::m_winthread</a>, <a class="el" href="_thread_chain_8h-source.html#l00368">PluginThreadPool::ThreadChain&lt; T &gt;::threadChkMutex</a>, and <a class="el" href="_thread_chain_8h-source.html#l00366">PluginThreadPool::ThreadChain&lt; T &gt;::threadpool</a>.</div></div><p><a class="anchor" name="f1aefaf34a1103cc7c0538f19db13faf"></a><!-- doxytag: member="PluginThreadPool::ThreadChain::~ThreadChain" ref="f1aefaf34a1103cc7c0538f19db13faf" args="()" --><div class="memitem"><div class="memproto"><div class="memtemplate">template&lt;typename T&gt; </div>      <table class="memname">        <tr>          <td class="memname"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">PluginThreadPool::ThreadChain</a>&lt; T &gt;::~<a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a>           </td>          <td>(</td>          <td class="paramname">          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"><code> [inline]</code></td>        </tr>      </table></div><div class="memdoc"><p>dtor <p><p>Definition at line <a class="el" href="_thread_chain_8h-source.html#l00335">335</a> of file <a class="el" href="_thread_chain_8h-source.html">ThreadChain.h</a>.<p>References <a class="el" href="_thread_chain_8h-source.html#l00362">PluginThreadPool::ThreadChain&lt; T &gt;::g_Event</a>, <a class="el" href="_thread_chain_8h-source.html#l00361">PluginThreadPool::ThreadChain&lt; T &gt;::m_winthread</a>, <a class="el" href="_thread_chain_8h-source.html#l00355">PluginThreadPool::ThreadChain&lt; T &gt;::next</a>, <a class="el" href="_thread_chain_8h-source.html#l00368">PluginThreadPool::ThreadChain&lt; T &gt;::threadChkMutex</a>, <a class="el" href="_thread_chain_8h-source.html#l00364">PluginThreadPool::ThreadChain&lt; T &gt;::threadId</a>, and <a class="el" href="_thread_chain_8h-source.html#l00366">PluginThreadPool::ThreadChain&lt; T &gt;::threadpool</a>.</div></div><p><a class="anchor" name="7a86f3702028dcfe97bec05d6152742c"></a><!-- doxytag: member="PluginThreadPool::ThreadChain::ThreadChain" ref="7a86f3702028dcfe97bec05d6152742c" args="(const ThreadChain &amp;)" --><div class="memitem"><div class="memproto"><div class="memtemplate">template&lt;typename T&gt; </div>      <table class="memname">        <tr>          <td class="memname"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">PluginThreadPool::ThreadChain</a>&lt; T &gt;::<a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a>           </td>          <td>(</td>          <td class="paramtype">const <a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a>&lt; T &gt; &amp;&nbsp;</td>          <td class="paramname">          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"><code> [inline, private]</code></td>        </tr>      </table></div><div class="memdoc"><p>there is no meaning in copying a thread, so making copy ctor and copy assignment private <p>Definition at line <a class="el" href="_thread_chain_8h-source.html#l00354">354</a> of file <a class="el" href="_thread_chain_8h-source.html">ThreadChain.h</a>.</div></div><p><hr><h2>Member Function Documentation</h2><a class="anchor" name="ec35c45936ab27aacf1f17a49962cbc1"></a><!-- doxytag: member="PluginThreadPool::ThreadChain::AddRef" ref="ec35c45936ab27aacf1f17a49962cbc1" args="()" --><div class="memitem"><div class="memproto"><div class="memtemplate">template&lt;typename T&gt; </div>      <table class="memname">        <tr>          <td class="memname">void <a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">PluginThreadPool::ThreadChain</a>&lt; T &gt;::AddRef           </td>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -