Fixed multithread sync issue and duplicate thread on termination.
This commit is contained in:
1 parent
b0118cfc56
commit
cfa70c5863
72 files changed
+395
-427
No files matched your search
+29
-42
@@ -97,56 +97,43 @@ $(function() {
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  </div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">bool</span> <a class="code" href="classcore_1_1EPoll.html#a301b46b71ac7ac61a687ff723fe269b3">isStopping</a>(); </div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">bool</span> <a class="code" href="classcore_1_1EPoll.html#a3d813c7bbf0da70ebc8e3cb6aeeacfb4">registerSocket</a>(<a class="code" href="classcore_1_1Socket.html">Socket</a> *socket); </div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">bool</span> <a class="code" href="classcore_1_1EPoll.html#a5ab5e82ab51e0952fc8fbcc128f52900">unregisterSocket</a>(<a class="code" href="classcore_1_1Socket.html">Socket</a> *socket); </div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  </div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">int</span> <a class="code" href="classcore_1_1EPoll.html#a1e52017e1deae15c1c87c6b6a099e1ed">getDescriptor</a>(); </div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  </div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classcore_1_1EPoll.html#acfcef2513d94f7b9a191fed3dc744d90"> 100</a></span>  <span class="keywordtype">int</span> <a class="code" href="classcore_1_1EPoll.html#acfcef2513d94f7b9a191fed3dc744d90">maxSockets</a>; </div>
|
||||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classcore_1_1EPoll.html#a3238b150b5d0a57eb2e1b17daa236d3b"> 106</a></span>  <span class="keywordtype">void</span> <a class="code" href="classcore_1_1EPoll.html#a3238b150b5d0a57eb2e1b17daa236d3b">eventReceived</a>(<span class="keyword">struct</span> epoll_event event); </div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div>
|
||||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div>
|
||||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">int</span> <a class="code" href="classcore_1_1EPoll.html#a22b5f1545aff3162040844be043abcce">processCommand</a>(coreutils::ZString &request, <a class="code" href="classcore_1_1TCPSession.html">TCPSession</a> &session) <span class="keyword">override</span>; </div>
|
||||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div>
|
||||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">void</span> resetSocket(<a class="code" href="classcore_1_1Socket.html">Socket</a> *socket);</div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  </div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">private</span>:</div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  </div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">int</span> epfd;</div>
|
||||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">int</span> numberOfThreads;</div>
|
||||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  std::vector<Thread> threads;</div>
|
||||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">volatile</span> <span class="keywordtype">bool</span> terminateThreads;</div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">void</span> enableSocket(<a class="code" href="classcore_1_1Socket.html">Socket</a> *socket);</div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">void</span> disableSocket(<a class="code" href="classcore_1_1Socket.html">Socket</a> *socket);</div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  </div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  };</div>
|
||||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div>
|
||||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div>
|
||||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div>
|
||||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  </div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">int</span> <a class="code" href="classcore_1_1EPoll.html#a1e52017e1deae15c1c87c6b6a099e1ed">getDescriptor</a>(); </div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  </div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classcore_1_1EPoll.html#acfcef2513d94f7b9a191fed3dc744d90"> 83</a></span>  <span class="keywordtype">int</span> <a class="code" href="classcore_1_1EPoll.html#acfcef2513d94f7b9a191fed3dc744d90">maxSockets</a>; </div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classcore_1_1EPoll.html#a3238b150b5d0a57eb2e1b17daa236d3b"> 89</a></span>  <span class="keywordtype">void</span> <a class="code" href="classcore_1_1EPoll.html#a3238b150b5d0a57eb2e1b17daa236d3b">eventReceived</a>(<span class="keyword">struct</span> epoll_event event); </div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  </div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">int</span> <a class="code" href="classcore_1_1EPoll.html#a22b5f1545aff3162040844be043abcce">processCommand</a>(coreutils::ZString &request, <a class="code" href="classcore_1_1TCPSession.html">TCPSession</a> &session) <span class="keyword">override</span>; </div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  </div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">private</span>:</div>
|
||||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div>
|
||||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">int</span> epfd;</div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">int</span> numberOfThreads;</div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  std::vector<Thread> threads;</div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">volatile</span> <span class="keywordtype">bool</span> terminateThreads;</div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  </div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  };</div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div>
|
||||
<div class="ttc" id="aclasscore_1_1Command_html"><div class="ttname"><a href="classcore_1_1Command.html">core::Command</a></div><div class="ttdef"><b>Definition:</b> Command.h:22</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html"><div class="ttname"><a href="classcore_1_1EPoll.html">core::EPoll</a></div><div class="ttdef"><b>Definition:</b> EPoll.h:31</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a0c2865acd31d14fbf19dbc42cc084ddc"><div class="ttname"><a href="classcore_1_1EPoll.html#a0c2865acd31d14fbf19dbc42cc084ddc">core::EPoll::stop</a></div><div class="ttdeci">bool stop()</div><div class="ttdoc">Stop and shut down the BMAEPoll processing.</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:46</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a1e52017e1deae15c1c87c6b6a099e1ed"><div class="ttname"><a href="classcore_1_1EPoll.html#a1e52017e1deae15c1c87c6b6a099e1ed">core::EPoll::getDescriptor</a></div><div class="ttdeci">int getDescriptor()</div><div class="ttdoc">Return the descriptor for the ePoll socket.</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:80</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a22b5f1545aff3162040844be043abcce"><div class="ttname"><a href="classcore_1_1EPoll.html#a22b5f1545aff3162040844be043abcce">core::EPoll::processCommand</a></div><div class="ttdeci">int processCommand(coreutils::ZString &request, TCPSession &session) override</div><div class="ttdoc">Output the threads array to the console.</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:84</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a1e52017e1deae15c1c87c6b6a099e1ed"><div class="ttname"><a href="classcore_1_1EPoll.html#a1e52017e1deae15c1c87c6b6a099e1ed">core::EPoll::getDescriptor</a></div><div class="ttdeci">int getDescriptor()</div><div class="ttdoc">Return the descriptor for the ePoll socket.</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:70</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a22b5f1545aff3162040844be043abcce"><div class="ttname"><a href="classcore_1_1EPoll.html#a22b5f1545aff3162040844be043abcce">core::EPoll::processCommand</a></div><div class="ttdeci">int processCommand(coreutils::ZString &request, TCPSession &session) override</div><div class="ttdoc">Output the threads array to the console.</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:74</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a2fd5cc4336b5f72990ecc0e7ea3d7641"><div class="ttname"><a href="classcore_1_1EPoll.html#a2fd5cc4336b5f72990ecc0e7ea3d7641">core::EPoll::EPoll</a></div><div class="ttdeci">EPoll()</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:9</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a301b46b71ac7ac61a687ff723fe269b3"><div class="ttname"><a href="classcore_1_1EPoll.html#a301b46b71ac7ac61a687ff723fe269b3">core::EPoll::isStopping</a></div><div class="ttdeci">bool isStopping()</div><div class="ttdoc">Returns a true if the stop command has been requested.</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:66</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a3238b150b5d0a57eb2e1b17daa236d3b"><div class="ttname"><a href="classcore_1_1EPoll.html#a3238b150b5d0a57eb2e1b17daa236d3b">core::EPoll::eventReceived</a></div><div class="ttdeci">void eventReceived(struct epoll_event event)</div><div class="ttdoc">Dispatch event to appropriate socket.</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a3d813c7bbf0da70ebc8e3cb6aeeacfb4"><div class="ttname"><a href="classcore_1_1EPoll.html#a3d813c7bbf0da70ebc8e3cb6aeeacfb4">core::EPoll::registerSocket</a></div><div class="ttdeci">bool registerSocket(Socket *socket)</div><div class="ttdoc">Register a BMASocket for monitoring by BMAEPoll.</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:70</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a5ab5e82ab51e0952fc8fbcc128f52900"><div class="ttname"><a href="classcore_1_1EPoll.html#a5ab5e82ab51e0952fc8fbcc128f52900">core::EPoll::unregisterSocket</a></div><div class="ttdeci">bool unregisterSocket(Socket *socket)</div><div class="ttdoc">Unregister a BMASocket from monitoring by BMAEPoll.</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:75</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_a8e7a2496d684b745a6410f9bd3e88534"><div class="ttname"><a href="classcore_1_1EPoll.html#a8e7a2496d684b745a6410f9bd3e88534">core::EPoll::~EPoll</a></div><div class="ttdeci">~EPoll()</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:18</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_aaefe2caef75eb538af90cb34682d277b"><div class="ttname"><a href="classcore_1_1EPoll.html#aaefe2caef75eb538af90cb34682d277b">core::EPoll::start</a></div><div class="ttdeci">bool start(int numberOfThreads, int maxSockets)</div><div class="ttdoc">Start the BMAEPoll processing.</div><div class="ttdef"><b>Definition:</b> EPoll.cpp:20</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_acfcef2513d94f7b9a191fed3dc744d90"><div class="ttname"><a href="classcore_1_1EPoll.html#acfcef2513d94f7b9a191fed3dc744d90">core::EPoll::maxSockets</a></div><div class="ttdeci">int maxSockets</div><div class="ttdoc">The maximum number of socket allowed.</div><div class="ttdef"><b>Definition:</b> EPoll.h:100</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1Socket_html"><div class="ttname"><a href="classcore_1_1Socket.html">core::Socket</a></div><div class="ttdef"><b>Definition:</b> Socket.h:34</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1EPoll_html_acfcef2513d94f7b9a191fed3dc744d90"><div class="ttname"><a href="classcore_1_1EPoll.html#acfcef2513d94f7b9a191fed3dc744d90">core::EPoll::maxSockets</a></div><div class="ttdeci">int maxSockets</div><div class="ttdoc">The maximum number of socket allowed.</div><div class="ttdef"><b>Definition:</b> EPoll.h:83</div></div>
|
||||
<div class="ttc" id="aclasscore_1_1TCPSession_html"><div class="ttname"><a href="classcore_1_1TCPSession.html">core::TCPSession</a></div><div class="ttdef"><b>Definition:</b> TCPSession.h:26</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
|
||||
Reference in new issue
Block a user