📄 class_plugin_thread_pool_1_1_thread_chain.html
字号:
<!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< T > 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 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 List</span></a></li> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="functions.html"><span>Class 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< T > Class Template Reference</h1><!-- doxytag: class="PluginThreadPool::ThreadChain" --><code>#include <<a class="el" href="_thread_chain_8h-source.html">ThreadChain.h</a>></code><p>Collaboration diagram for PluginThreadPool::ThreadChain< T >:<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"> </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>< T > *pool)</td></tr><tr><td class="mdescLeft"> </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 </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 </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 </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>< T > *prev)</td></tr><tr><td class="mdescLeft"> </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 </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"> </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> * </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"> </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 </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 </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 </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"> </td><td class="mdescRight">reference couting <a href="#ec35c45936ab27aacf1f17a49962cbc1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </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"> </td><td class="mdescRight">reference couting <a href="#0247af1e66ef2aa1152f7b6a81f32753"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"> </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"> </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 </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"> </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> &)</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> & </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> &)</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> * </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 </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"> </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 </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 </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 * </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 </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 </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 </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 </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>< T > * </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 </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"> </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 </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 </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<typename T><br> class PluginThreadPool::ThreadChain< T ></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 & Destructor Documentation</h2><a class="anchor" name="eb53c1e23394b2751909550448fae624"></a><!-- doxytag: member="PluginThreadPool::ThreadChain::ThreadChain" ref="eb53c1e23394b2751909550448fae624" args="(ThreadChain *p, ThreadPool< T > *pool)" --><div class="memitem"><div class="memproto"><div class="memtemplate">template<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">PluginThreadPool::ThreadChain</a>< T >::<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>< T > * </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>< T > * </td> <td class="paramname"> <em>pool</em></td><td> </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< T >::AddRef()</a>, <a class="el" href="_thread_chain_8h-source.html#l00362">PluginThreadPool::ThreadChain< T >::g_Event</a>, <a class="el" href="_thread_chain_8h-source.html#l00107">PluginThreadPool::ThreadChain< T >::HandleRequestProxy()</a>, <a class="el" href="_thread_chain_8h-source.html#l00361">PluginThreadPool::ThreadChain< T >::m_winthread</a>, <a class="el" href="_thread_chain_8h-source.html#l00368">PluginThreadPool::ThreadChain< T >::threadChkMutex</a>, and <a class="el" href="_thread_chain_8h-source.html#l00366">PluginThreadPool::ThreadChain< T >::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<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">PluginThreadPool::ThreadChain</a>< T >::~<a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">ThreadChain</a> </td> <td>(</td> <td class="paramname"> </td> <td> ) </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< T >::g_Event</a>, <a class="el" href="_thread_chain_8h-source.html#l00361">PluginThreadPool::ThreadChain< T >::m_winthread</a>, <a class="el" href="_thread_chain_8h-source.html#l00355">PluginThreadPool::ThreadChain< T >::next</a>, <a class="el" href="_thread_chain_8h-source.html#l00368">PluginThreadPool::ThreadChain< T >::threadChkMutex</a>, <a class="el" href="_thread_chain_8h-source.html#l00364">PluginThreadPool::ThreadChain< T >::threadId</a>, and <a class="el" href="_thread_chain_8h-source.html#l00366">PluginThreadPool::ThreadChain< T >::threadpool</a>.</div></div><p><a class="anchor" name="7a86f3702028dcfe97bec05d6152742c"></a><!-- doxytag: member="PluginThreadPool::ThreadChain::ThreadChain" ref="7a86f3702028dcfe97bec05d6152742c" args="(const ThreadChain &)" --><div class="memitem"><div class="memproto"><div class="memtemplate">template<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="class_plugin_thread_pool_1_1_thread_chain.html">PluginThreadPool::ThreadChain</a>< T >::<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>< T > & </td> <td class="paramname"> </td> <td> ) </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<typename T> </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>< T >::AddRef </td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -