Files
rippled/Workers_8h_source.html
2025-12-11 08:55:10 -08:00

281 lines
48 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: Workers.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0103a8ad82dcc2c51f5cde661b4b5cb7.html">xrpl</a></li><li class="navelem"><a class="el" href="dir_12f61dd819fd86862696b124db74f9af.html">core</a></li><li class="navelem"><a class="el" href="dir_0e282ff060c206a4c4991f37825e6f7a.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">Workers.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef XRPL_CORE_WORKERS_H_INCLUDED</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define XRPL_CORE_WORKERS_H_INCLUDED</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &lt;xrpl/beast/core/LockFreeStack.h&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;xrpl/core/detail/semaphore.h&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/atomic.html">atomic</a>&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/condition_variable.html">condition_variable</a>&gt;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/mutex.html">mutex</a>&gt;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/string.html">string</a>&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/thread.html">thread</a>&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacexrpl.html">xrpl</a> {</div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="foldopen" id="foldopen00015" data-start="{" data-end="}">
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"><a class="line" href="namespacexrpl_1_1perf.html"> 15</a></span><span class="keyword">namespace </span>perf {</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">class </span><a class="code hl_class" href="classxrpl_1_1perf_1_1PerfLog.html">PerfLog</a>;</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span>}</div>
</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="foldopen" id="foldopen00061" data-start="{" data-end="};">
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html"> 61</a></span><span class="keyword">class </span><a class="code hl_class" href="classxrpl_1_1Workers.html">Workers</a></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span>{</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00065" data-start="{" data-end="};">
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="structxrpl_1_1Workers_1_1Callback.html"> 65</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structxrpl_1_1Workers_1_1Callback.html">Callback</a></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> {</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="structxrpl_1_1Workers_1_1Callback.html#ab251c327bb089c1c5a918558b9717633"> 67</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="structxrpl_1_1Workers_1_1Callback.html#ab251c327bb089c1c5a918558b9717633">~Callback</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="structxrpl_1_1Workers_1_1Callback.html#aa1fc61dedf8f44b1dfb8b438f7aa28f7"> 68</a></span> <a class="code hl_function" href="structxrpl_1_1Workers_1_1Callback.html#aa1fc61dedf8f44b1dfb8b438f7aa28f7">Callback</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="structxrpl_1_1Workers_1_1Callback.html#a4710dc003d1d3597c6aaf3242b1cad55"> 69</a></span> <a class="code hl_function" href="structxrpl_1_1Workers_1_1Callback.html#a4710dc003d1d3597c6aaf3242b1cad55">Callback</a>(<a class="code hl_struct" href="structxrpl_1_1Workers_1_1Callback.html">Callback</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <a class="code hl_struct" href="structxrpl_1_1Workers_1_1Callback.html">Callback</a>&amp;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="structxrpl_1_1Workers_1_1Callback.html#aaae80d264c5df4264b561647cd2f792b"> 71</a></span> <a class="code hl_function" href="structxrpl_1_1Workers_1_1Callback.html#aaae80d264c5df4264b561647cd2f792b">operator=</a>(<a class="code hl_struct" href="structxrpl_1_1Workers_1_1Callback.html">Callback</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="structxrpl_1_1Workers_1_1Callback.html#aa96db4157ea8f125a526e6ea05576393"> 84</a></span> <a class="code hl_function" href="structxrpl_1_1Workers_1_1Callback.html#aa96db4157ea8f125a526e6ea05576393">processTask</a>(<span class="keywordtype">int</span> instance) = 0;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> };</div>
</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keyword">explicit</span> <a class="code hl_class" href="classxrpl_1_1Workers.html">Workers</a>(</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <a class="code hl_struct" href="structxrpl_1_1Workers_1_1Callback.html">Callback</a>&amp; callback,</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <a class="code hl_class" href="classxrpl_1_1perf_1_1PerfLog.html">perf::PerfLog</a>* perfLog,</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; threadNames = <span class="stringliteral">&quot;Worker&quot;</span>,</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">int</span> numberOfThreads =</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/thread/thread/hardware_concurrency.html">std::thread::hardware_concurrency</a>()));</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <a class="code hl_function" href="classxrpl_1_1Workers.html#a6dc76a5f0c26c6e61d9fcc1e53dd3dc7">~Workers</a>();</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">int</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <a class="code hl_function" href="classxrpl_1_1Workers.html#afdfacb663c3f7ca1497d9001076ff8e4">getNumberOfThreads</a>() const noexcept;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <a class="code hl_function" href="classxrpl_1_1Workers.html#a01075e3185028d61155505cf2de3a3b7">setNumberOfThreads</a>(<span class="keywordtype">int</span> numberOfThreads);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <a class="code hl_function" href="classxrpl_1_1Workers.html#a0df8928613ca32476a856bc9c85db97d">stop</a>();</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_function" href="classxrpl_1_1Workers.html#a6b15463717a8b3263ad7f34d4e508d39">addTask</a>();</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">int</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <a class="code hl_function" href="classxrpl_1_1Workers.html#a3d3cf114918ec51c1f9172b9dd2d2795">numberOfCurrentlyRunningTasks</a>() const noexcept;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span>private:</div>
<div class="foldopen" id="foldopen00152" data-start="{" data-end="};">
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="structxrpl_1_1Workers_1_1PausedTag.html"> 152</a></span> struct <a class="code hl_struct" href="structxrpl_1_1Workers_1_1PausedTag.html">PausedTag</a></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> {</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="structxrpl_1_1Workers_1_1PausedTag.html#abbaa1c8685b052559ae10e8d910545f8"> 154</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="structxrpl_1_1Workers_1_1PausedTag.html#abbaa1c8685b052559ae10e8d910545f8">PausedTag</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> };</div>
</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="comment">/* A Worker executes tasks on its provided thread.</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="comment"></span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment"> These are the states:</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment"></span> </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment"> Active: Running the task processing loop.</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment"> Idle: Active, but blocked on waiting for a task.</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment"> Paused: Blocked waiting to exit or become active.</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00165" data-start="{" data-end="};">
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers_1_1Worker.html"> 165</a></span> <span class="keyword">class </span><a class="code hl_class" href="classxrpl_1_1Workers_1_1Worker.html">Worker</a> : <span class="keyword">public</span> <a class="code hl_class" href="classbeast_1_1LockFreeStack.html">beast::LockFreeStack</a>&lt;Worker&gt;::Node,</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keyword">public</span> <a class="code hl_class" href="classbeast_1_1LockFreeStack.html">beast::LockFreeStack</a>&lt;Worker, PausedTag&gt;::Node</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> {</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <a class="code hl_class" href="classxrpl_1_1Workers_1_1Worker.html">Worker</a>(</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <a class="code hl_class" href="classxrpl_1_1Workers.html">Workers</a>&amp; workers,</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; threadName,</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordtype">int</span> <span class="keyword">const</span> instance);</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <a class="code hl_function" href="classxrpl_1_1Workers_1_1Worker.html#a118a9bd209934c6a752bfdc38e30e2fc">~Worker</a>();</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <a class="code hl_function" href="classxrpl_1_1Workers_1_1Worker.html#aaf0c6aebea3d823d0fd980fa4b13eabc">notify</a>();</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <a class="code hl_function" href="classxrpl_1_1Workers_1_1Worker.html#a188c89e721a9dff2eeb23f90fe128391">run</a>();</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers_1_1Worker.html#abe0d2118c0bc5d9977f2e3f879a6c0e1"> 184</a></span> <a class="code hl_class" href="classxrpl_1_1Workers.html">Workers</a>&amp; <a class="code hl_variable" href="classxrpl_1_1Workers_1_1Worker.html#abe0d2118c0bc5d9977f2e3f879a6c0e1">m_workers</a>;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers_1_1Worker.html#a22c736916509a2d2e84e44ffbb6f6520"> 185</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span> <a class="code hl_variable" href="classxrpl_1_1Workers_1_1Worker.html#a22c736916509a2d2e84e44ffbb6f6520">threadName_</a>;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers_1_1Worker.html#a89c8e67f5300bd866a48b71193415538"> 186</a></span> <span class="keywordtype">int</span> <span class="keyword">const</span> <a class="code hl_variable" href="classxrpl_1_1Workers_1_1Worker.html#a89c8e67f5300bd866a48b71193415538">instance_</a>;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers_1_1Worker.html#a711f32f34d7762b346ec89ebb63c2108"> 188</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/thread.html">std::thread</a> <a class="code hl_variable" href="classxrpl_1_1Workers_1_1Worker.html#a711f32f34d7762b346ec89ebb63c2108">thread_</a>;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers_1_1Worker.html#a827b876b31f835629e24e49c3f550766"> 189</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a> <a class="code hl_variable" href="classxrpl_1_1Workers_1_1Worker.html#a827b876b31f835629e24e49c3f550766">mutex_</a>;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers_1_1Worker.html#ac45aede78c22c90923ac8354c59dc5ed"> 190</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a> <a class="code hl_variable" href="classxrpl_1_1Workers_1_1Worker.html#ac45aede78c22c90923ac8354c59dc5ed">wakeup_</a>;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers_1_1Worker.html#a8e2effb8b8ec5e21417004152ae62884"> 191</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="classxrpl_1_1Workers_1_1Worker.html#a8e2effb8b8ec5e21417004152ae62884">wakeCount_</a>; <span class="comment">// how many times to un-pause</span></div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers_1_1Worker.html#acf7f88688add234963b890a7965f6674"> 192</a></span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classxrpl_1_1Workers_1_1Worker.html#acf7f88688add234963b890a7965f6674">shouldExit_</a>;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> };</div>
</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <a class="code hl_function" href="classxrpl_1_1Workers.html#aa14b1e8357c447e2e54e472d30447c1c">deleteWorkers</a>(<a class="code hl_class" href="classbeast_1_1LockFreeStack.html">beast::LockFreeStack&lt;Worker&gt;</a>&amp; stack);</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#ab44da711661f1fa3479833173505ae4d"> 200</a></span> <a class="code hl_struct" href="structxrpl_1_1Workers_1_1Callback.html">Callback</a>&amp; <a class="code hl_variable" href="classxrpl_1_1Workers.html#ab44da711661f1fa3479833173505ae4d">m_callback</a>;</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#a988c6d315e2e296ec4af1fada24218ce"> 201</a></span> <a class="code hl_class" href="classxrpl_1_1perf_1_1PerfLog.html">perf::PerfLog</a>* <a class="code hl_variable" href="classxrpl_1_1Workers.html#a988c6d315e2e296ec4af1fada24218ce">perfLog_</a>;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#acbf2c9e5f0941fc5582788bf0e3808de"> 202</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <a class="code hl_variable" href="classxrpl_1_1Workers.html#acbf2c9e5f0941fc5582788bf0e3808de">m_threadNames</a>; <span class="comment">// The name to give each thread</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#a365b060489536e30ac79ae25242b4db7"> 203</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a> <a class="code hl_variable" href="classxrpl_1_1Workers.html#a365b060489536e30ac79ae25242b4db7">m_cv</a>; <span class="comment">// signaled when all threads paused</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#a3039728871ea3b1cc04d4415b0805e7d"> 204</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a> <a class="code hl_variable" href="classxrpl_1_1Workers.html#a3039728871ea3b1cc04d4415b0805e7d">m_mut</a>;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#a6766b60fbf5fc2c6344c59912dccc35c"> 205</a></span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classxrpl_1_1Workers.html#a6766b60fbf5fc2c6344c59912dccc35c">m_allPaused</a>;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#a9dde1a72963fdea64aad904fd5877c9e"> 206</a></span> <a class="code hl_class" href="classxrpl_1_1basic__semaphore.html">semaphore</a> <a class="code hl_variable" href="classxrpl_1_1Workers.html#a9dde1a72963fdea64aad904fd5877c9e">m_semaphore</a>; <span class="comment">// each pending task is 1 resource</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#acb0131452f7e36ab0497a9157677262b"> 207</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="classxrpl_1_1Workers.html#acb0131452f7e36ab0497a9157677262b">m_numberOfThreads</a>; <span class="comment">// how many we want active now</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#a2c29cc61524118b8813b9722750200a8"> 208</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;int&gt;</a> <a class="code hl_variable" href="classxrpl_1_1Workers.html#a2c29cc61524118b8813b9722750200a8">m_activeCount</a>; <span class="comment">// to know when all are paused</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#a8ddfcad87f2884ed3620ac5fcdfa917c"> 209</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;int&gt;</a> <a class="code hl_variable" href="classxrpl_1_1Workers.html#a8ddfcad87f2884ed3620ac5fcdfa917c">m_pauseCount</a>; <span class="comment">// how many threads need to pause now</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;int&gt;</a></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#a2ef8309e53a00ddf8c091d2c742e9957"> 211</a></span> <a class="code hl_variable" href="classxrpl_1_1Workers.html#a2ef8309e53a00ddf8c091d2c742e9957">m_runningTaskCount</a>; <span class="comment">// how many calls to processTask() active</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#afa1d8af117e477008ac6413d19141232"> 212</a></span> <a class="code hl_class" href="classbeast_1_1LockFreeStack.html">beast::LockFreeStack&lt;Worker&gt;</a> <a class="code hl_variable" href="classxrpl_1_1Workers.html#afa1d8af117e477008ac6413d19141232">m_everyone</a>; <span class="comment">// holds all created workers</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <a class="code hl_class" href="classbeast_1_1LockFreeStack.html">beast::LockFreeStack&lt;Worker, PausedTag&gt;</a></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="classxrpl_1_1Workers.html#a843e06865dcd474218ae13200bb616ac"> 214</a></span> <a class="code hl_variable" href="classxrpl_1_1Workers.html#a843e06865dcd474218ae13200bb616ac">m_paused</a>; <span class="comment">// holds just paused workers</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span>};</div>
</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> </div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span>} <span class="comment">// namespace xrpl</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aatomic_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/atomic.html">atomic</a></div></div>
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div></div>
<div class="ttc" id="aclassbeast_1_1LockFreeStack_html"><div class="ttname"><a href="classbeast_1_1LockFreeStack.html">beast::LockFreeStack</a></div><div class="ttdoc">Multiple Producer, Multiple Consumer (MPMC) intrusive stack.</div><div class="ttdef"><b>Definition</b> <a href="LockFreeStack_8h_source.html#l00127">LockFreeStack.h:128</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html">xrpl::Workers::Worker</a></div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00165">Workers.h:167</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_a118a9bd209934c6a752bfdc38e30e2fc"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#a118a9bd209934c6a752bfdc38e30e2fc">xrpl::Workers::Worker::~Worker</a></div><div class="ttdeci">~Worker()</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00154">Workers.cpp:154</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_a188c89e721a9dff2eeb23f90fe128391"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#a188c89e721a9dff2eeb23f90fe128391">xrpl::Workers::Worker::run</a></div><div class="ttdeci">void run()</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00175">Workers.cpp:175</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_a22c736916509a2d2e84e44ffbb6f6520"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#a22c736916509a2d2e84e44ffbb6f6520">xrpl::Workers::Worker::threadName_</a></div><div class="ttdeci">std::string const threadName_</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00185">Workers.h:185</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_a711f32f34d7762b346ec89ebb63c2108"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#a711f32f34d7762b346ec89ebb63c2108">xrpl::Workers::Worker::thread_</a></div><div class="ttdeci">std::thread thread_</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00188">Workers.h:188</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_a827b876b31f835629e24e49c3f550766"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#a827b876b31f835629e24e49c3f550766">xrpl::Workers::Worker::mutex_</a></div><div class="ttdeci">std::mutex mutex_</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00189">Workers.h:189</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_a89c8e67f5300bd866a48b71193415538"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#a89c8e67f5300bd866a48b71193415538">xrpl::Workers::Worker::instance_</a></div><div class="ttdeci">int const instance_</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00186">Workers.h:186</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_a8e2effb8b8ec5e21417004152ae62884"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#a8e2effb8b8ec5e21417004152ae62884">xrpl::Workers::Worker::wakeCount_</a></div><div class="ttdeci">int wakeCount_</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00191">Workers.h:191</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_aaf0c6aebea3d823d0fd980fa4b13eabc"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#aaf0c6aebea3d823d0fd980fa4b13eabc">xrpl::Workers::Worker::notify</a></div><div class="ttdeci">void notify()</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00167">Workers.cpp:167</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_abe0d2118c0bc5d9977f2e3f879a6c0e1"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#abe0d2118c0bc5d9977f2e3f879a6c0e1">xrpl::Workers::Worker::m_workers</a></div><div class="ttdeci">Workers &amp; m_workers</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00184">Workers.h:184</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_ac45aede78c22c90923ac8354c59dc5ed"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#ac45aede78c22c90923ac8354c59dc5ed">xrpl::Workers::Worker::wakeup_</a></div><div class="ttdeci">std::condition_variable wakeup_</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00190">Workers.h:190</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_1_1Worker_html_acf7f88688add234963b890a7965f6674"><div class="ttname"><a href="classxrpl_1_1Workers_1_1Worker.html#acf7f88688add234963b890a7965f6674">xrpl::Workers::Worker::shouldExit_</a></div><div class="ttdeci">bool shouldExit_</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00192">Workers.h:192</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html"><div class="ttname"><a href="classxrpl_1_1Workers.html">xrpl::Workers</a></div><div class="ttdoc">Workers is effectively a thread pool.</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00061">Workers.h:62</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a01075e3185028d61155505cf2de3a3b7"><div class="ttname"><a href="classxrpl_1_1Workers.html#a01075e3185028d61155505cf2de3a3b7">xrpl::Workers::setNumberOfThreads</a></div><div class="ttdeci">void setNumberOfThreads(int numberOfThreads)</div><div class="ttdoc">Set the desired number of threads.</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00044">Workers.cpp:44</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a0df8928613ca32476a856bc9c85db97d"><div class="ttname"><a href="classxrpl_1_1Workers.html#a0df8928613ca32476a856bc9c85db97d">xrpl::Workers::stop</a></div><div class="ttdeci">void stop()</div><div class="ttdoc">Pause all threads and wait until they are paused.</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00095">Workers.cpp:95</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a2c29cc61524118b8813b9722750200a8"><div class="ttname"><a href="classxrpl_1_1Workers.html#a2c29cc61524118b8813b9722750200a8">xrpl::Workers::m_activeCount</a></div><div class="ttdeci">std::atomic&lt; int &gt; m_activeCount</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00208">Workers.h:208</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a2ef8309e53a00ddf8c091d2c742e9957"><div class="ttname"><a href="classxrpl_1_1Workers.html#a2ef8309e53a00ddf8c091d2c742e9957">xrpl::Workers::m_runningTaskCount</a></div><div class="ttdeci">std::atomic&lt; int &gt; m_runningTaskCount</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00211">Workers.h:211</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a3039728871ea3b1cc04d4415b0805e7d"><div class="ttname"><a href="classxrpl_1_1Workers.html#a3039728871ea3b1cc04d4415b0805e7d">xrpl::Workers::m_mut</a></div><div class="ttdeci">std::mutex m_mut</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00204">Workers.h:204</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a365b060489536e30ac79ae25242b4db7"><div class="ttname"><a href="classxrpl_1_1Workers.html#a365b060489536e30ac79ae25242b4db7">xrpl::Workers::m_cv</a></div><div class="ttdeci">std::condition_variable m_cv</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00203">Workers.h:203</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a3d3cf114918ec51c1f9172b9dd2d2795"><div class="ttname"><a href="classxrpl_1_1Workers.html#a3d3cf114918ec51c1f9172b9dd2d2795">xrpl::Workers::numberOfCurrentlyRunningTasks</a></div><div class="ttdeci">int numberOfCurrentlyRunningTasks() const noexcept</div><div class="ttdoc">Get the number of currently executing calls of Callback::processTask.</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00115">Workers.cpp:115</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a6766b60fbf5fc2c6344c59912dccc35c"><div class="ttname"><a href="classxrpl_1_1Workers.html#a6766b60fbf5fc2c6344c59912dccc35c">xrpl::Workers::m_allPaused</a></div><div class="ttdeci">bool m_allPaused</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00205">Workers.h:205</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a6b15463717a8b3263ad7f34d4e508d39"><div class="ttname"><a href="classxrpl_1_1Workers.html#a6b15463717a8b3263ad7f34d4e508d39">xrpl::Workers::addTask</a></div><div class="ttdeci">void addTask()</div><div class="ttdoc">Add a task to be performed.</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00109">Workers.cpp:109</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a6dc76a5f0c26c6e61d9fcc1e53dd3dc7"><div class="ttname"><a href="classxrpl_1_1Workers.html#a6dc76a5f0c26c6e61d9fcc1e53dd3dc7">xrpl::Workers::~Workers</a></div><div class="ttdeci">~Workers()</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00026">Workers.cpp:26</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a843e06865dcd474218ae13200bb616ac"><div class="ttname"><a href="classxrpl_1_1Workers.html#a843e06865dcd474218ae13200bb616ac">xrpl::Workers::m_paused</a></div><div class="ttdeci">beast::LockFreeStack&lt; Worker, PausedTag &gt; m_paused</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00214">Workers.h:214</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a8ddfcad87f2884ed3620ac5fcdfa917c"><div class="ttname"><a href="classxrpl_1_1Workers.html#a8ddfcad87f2884ed3620ac5fcdfa917c">xrpl::Workers::m_pauseCount</a></div><div class="ttdeci">std::atomic&lt; int &gt; m_pauseCount</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00209">Workers.h:209</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a988c6d315e2e296ec4af1fada24218ce"><div class="ttname"><a href="classxrpl_1_1Workers.html#a988c6d315e2e296ec4af1fada24218ce">xrpl::Workers::perfLog_</a></div><div class="ttdeci">perf::PerfLog * perfLog_</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00201">Workers.h:201</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_a9dde1a72963fdea64aad904fd5877c9e"><div class="ttname"><a href="classxrpl_1_1Workers.html#a9dde1a72963fdea64aad904fd5877c9e">xrpl::Workers::m_semaphore</a></div><div class="ttdeci">semaphore m_semaphore</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00206">Workers.h:206</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_aa14b1e8357c447e2e54e472d30447c1c"><div class="ttname"><a href="classxrpl_1_1Workers.html#aa14b1e8357c447e2e54e472d30447c1c">xrpl::Workers::deleteWorkers</a></div><div class="ttdeci">static void deleteWorkers(beast::LockFreeStack&lt; Worker &gt; &amp;stack)</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00121">Workers.cpp:121</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_ab44da711661f1fa3479833173505ae4d"><div class="ttname"><a href="classxrpl_1_1Workers.html#ab44da711661f1fa3479833173505ae4d">xrpl::Workers::m_callback</a></div><div class="ttdeci">Callback &amp; m_callback</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00200">Workers.h:200</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_acb0131452f7e36ab0497a9157677262b"><div class="ttname"><a href="classxrpl_1_1Workers.html#acb0131452f7e36ab0497a9157677262b">xrpl::Workers::m_numberOfThreads</a></div><div class="ttdeci">int m_numberOfThreads</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00207">Workers.h:207</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_acbf2c9e5f0941fc5582788bf0e3808de"><div class="ttname"><a href="classxrpl_1_1Workers.html#acbf2c9e5f0941fc5582788bf0e3808de">xrpl::Workers::m_threadNames</a></div><div class="ttdeci">std::string m_threadNames</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00202">Workers.h:202</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_afa1d8af117e477008ac6413d19141232"><div class="ttname"><a href="classxrpl_1_1Workers.html#afa1d8af117e477008ac6413d19141232">xrpl::Workers::m_everyone</a></div><div class="ttdeci">beast::LockFreeStack&lt; Worker &gt; m_everyone</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00212">Workers.h:212</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Workers_html_afdfacb663c3f7ca1497d9001076ff8e4"><div class="ttname"><a href="classxrpl_1_1Workers.html#afdfacb663c3f7ca1497d9001076ff8e4">xrpl::Workers::getNumberOfThreads</a></div><div class="ttdeci">int getNumberOfThreads() const noexcept</div><div class="ttdoc">Retrieve the desired number of threads.</div><div class="ttdef"><b>Definition</b> <a href="Workers_8cpp_source.html#l00034">Workers.cpp:34</a></div></div>
<div class="ttc" id="aclassxrpl_1_1basic__semaphore_html"><div class="ttname"><a href="classxrpl_1_1basic__semaphore.html">xrpl::basic_semaphore&lt; std::mutex, std::condition_variable &gt;</a></div></div>
<div class="ttc" id="aclassxrpl_1_1perf_1_1PerfLog_html"><div class="ttname"><a href="classxrpl_1_1perf_1_1PerfLog.html">xrpl::perf::PerfLog</a></div><div class="ttdoc">Singleton class that maintains performance counters and optionally writes Json-formatted data to a di...</div><div class="ttdef"><b>Definition</b> <a href="PerfLog_8h_source.html#l00031">PerfLog.h:32</a></div></div>
<div class="ttc" id="acondition_variable_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/condition_variable.html">condition_variable</a></div></div>
<div class="ttc" id="ahardware_concurrency_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/thread/hardware_concurrency.html">std::thread::hardware_concurrency</a></div><div class="ttdeci">T hardware_concurrency(T... args)</div></div>
<div class="ttc" id="amutex_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/mutex.html">mutex</a></div></div>
<div class="ttc" id="anamespacexrpl_html"><div class="ttname"><a href="namespacexrpl.html">xrpl</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition</b> <a href="algorithm_8h_source.html#l00006">algorithm.h:6</a></div></div>
<div class="ttc" id="astring_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/string.html">string</a></div></div>
<div class="ttc" id="astructxrpl_1_1Workers_1_1Callback_html"><div class="ttname"><a href="structxrpl_1_1Workers_1_1Callback.html">xrpl::Workers::Callback</a></div><div class="ttdoc">Called to perform tasks as needed.</div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00065">Workers.h:66</a></div></div>
<div class="ttc" id="astructxrpl_1_1Workers_1_1Callback_html_a4710dc003d1d3597c6aaf3242b1cad55"><div class="ttname"><a href="structxrpl_1_1Workers_1_1Callback.html#a4710dc003d1d3597c6aaf3242b1cad55">xrpl::Workers::Callback::Callback</a></div><div class="ttdeci">Callback(Callback const &amp;)=delete</div></div>
<div class="ttc" id="astructxrpl_1_1Workers_1_1Callback_html_aa1fc61dedf8f44b1dfb8b438f7aa28f7"><div class="ttname"><a href="structxrpl_1_1Workers_1_1Callback.html#aa1fc61dedf8f44b1dfb8b438f7aa28f7">xrpl::Workers::Callback::Callback</a></div><div class="ttdeci">Callback()=default</div></div>
<div class="ttc" id="astructxrpl_1_1Workers_1_1Callback_html_aa96db4157ea8f125a526e6ea05576393"><div class="ttname"><a href="structxrpl_1_1Workers_1_1Callback.html#aa96db4157ea8f125a526e6ea05576393">xrpl::Workers::Callback::processTask</a></div><div class="ttdeci">virtual void processTask(int instance)=0</div><div class="ttdoc">Perform a task.</div></div>
<div class="ttc" id="astructxrpl_1_1Workers_1_1Callback_html_aaae80d264c5df4264b561647cd2f792b"><div class="ttname"><a href="structxrpl_1_1Workers_1_1Callback.html#aaae80d264c5df4264b561647cd2f792b">xrpl::Workers::Callback::operator=</a></div><div class="ttdeci">Callback &amp; operator=(Callback const &amp;)=delete</div></div>
<div class="ttc" id="astructxrpl_1_1Workers_1_1Callback_html_ab251c327bb089c1c5a918558b9717633"><div class="ttname"><a href="structxrpl_1_1Workers_1_1Callback.html#ab251c327bb089c1c5a918558b9717633">xrpl::Workers::Callback::~Callback</a></div><div class="ttdeci">virtual ~Callback()=default</div></div>
<div class="ttc" id="astructxrpl_1_1Workers_1_1PausedTag_html"><div class="ttname"><a href="structxrpl_1_1Workers_1_1PausedTag.html">xrpl::Workers::PausedTag</a></div><div class="ttdef"><b>Definition</b> <a href="Workers_8h_source.html#l00152">Workers.h:153</a></div></div>
<div class="ttc" id="astructxrpl_1_1Workers_1_1PausedTag_html_abbaa1c8685b052559ae10e8d910545f8"><div class="ttname"><a href="structxrpl_1_1Workers_1_1PausedTag.html#abbaa1c8685b052559ae10e8d910545f8">xrpl::Workers::PausedTag::PausedTag</a></div><div class="ttdeci">PausedTag()=default</div></div>
<div class="ttc" id="athread_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/thread.html">thread</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>