Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f69d4bf

Browse files
authored
use quickpool (tnagler#53)
* use quickpool * update NEWS
1 parent 5d362e1 commit f69d4bf

34 files changed

+1736
-356
lines changed

NEWS.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Add classes `ProgressCounter` and `ProgressBar` for tracking progress in long-
66
running loops (#49).
77

8-
* Increased speed due to lock-free queue (#51).
8+
* Increased speed due to work-stealing and lock-free pops (#51).
99

1010

1111
# RcppThread 1.0.0

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ or the [API documentation](https://tnagler.github.io/RcppThread/).
2929

3030
Since then, the following features have been added:
3131

32-
- Faster runtimes thanks to a work stealing queue with lock-free pops (from [tpool](https://github.com/tnagler/tpool)).
32+
- Faster runtimes thanks to a work stealing queue with lock-free pops (from [quickpool](https://github.com/tnagler/quickpool)).
3333

3434
- An R function `RcppThread::detectCores()` to determine the number of (logical)
3535
cores on your machine.

docs/Doxyfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -894,7 +894,7 @@ EXCLUDE_PATTERNS =
894894
# Note that the wildcards are matched against the file with absolute path, so to
895895
# exclude all test directories use the pattern */test/*
896896

897-
EXCLUDE_SYMBOLS = std tpool *Batch*
897+
EXCLUDE_SYMBOLS = std quickpool *Batch*
898898

899899
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
900900
# that contain example code fragments that are included (see the \include

docs/classRcppThread_1_1ThreadPool.html

-4
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,6 @@ <h2><a href="#pub-methods">Public functions</a></h2>
127127
<span class="m-doc-wrap-bumper">void <a href="#a1ba95e4fe30c81e19c7980c865a8ce86" class="m-doc-self">join</a>(</span><span class="m-doc-wrap">)</span>
128128
</dt>
129129
<dd>waits for all jobs to finish and joins all threads.</dd>
130-
<dt id="a3a26cfd27907154d54a76a2240940507">
131-
<span class="m-doc-wrap-bumper">void <a href="#a3a26cfd27907154d54a76a2240940507" class="m-doc-self">clear</a>(</span><span class="m-doc-wrap">)</span>
132-
</dt>
133-
<dd>clears the pool from all open jobs.</dd>
134130
</dl>
135131
</section>
136132
<section>

docs/classquickpool_1_1TodoList.html

+232
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<title>quickpool::TodoList class | RcppThread R-friendly
6+
threading
7+
in
8+
C++</title>
9+
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
10+
<link rel="stylesheet" href="m-dark+documentation.compiled.css" />
11+
<link rel="icon" href="favicon-dark.png" type="image/png" />
12+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
13+
<meta name="theme-color" content="#22272e" />
14+
</head>
15+
<body>
16+
<header><nav id="navigation">
17+
<div class="m-container">
18+
<div class="m-row">
19+
<span id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">
20+
<a href="https://github.com/tnagler/RcppThread">RcppThread</a> <span class="m-breadcrumb">|</span> <a href="index.html" class="m-thin">R-friendly
21+
threading
22+
in
23+
C++</a>
24+
</span>
25+
<div class="m-col-t-4 m-hide-m m-text-right m-nopadr">
26+
<a href="#search" class="m-doc-search-icon" title="Search" onclick="return showSearch()"><svg style="height: 0.9rem;" viewBox="0 0 16 16">
27+
<path id="m-doc-search-icon-path" d="m6 0c-3.31 0-6 2.69-6 6 0 3.31 2.69 6 6 6 1.49 0 2.85-0.541 3.89-1.44-0.0164 0.338 0.147 0.759 0.5 1.15l3.22 3.79c0.552 0.614 1.45 0.665 2 0.115 0.55-0.55 0.499-1.45-0.115-2l-3.79-3.22c-0.392-0.353-0.812-0.515-1.15-0.5 0.895-1.05 1.44-2.41 1.44-3.89 0-3.31-2.69-6-6-6zm0 1.56a4.44 4.44 0 0 1 4.44 4.44 4.44 4.44 0 0 1-4.44 4.44 4.44 4.44 0 0 1-4.44-4.44 4.44 4.44 0 0 1 4.44-4.44z"/>
28+
</svg></a>
29+
<a id="m-navbar-show" href="#navigation" title="Show navigation"></a>
30+
<a id="m-navbar-hide" href="#" title="Hide navigation"></a>
31+
</div>
32+
<div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
33+
<div class="m-row">
34+
<ol class="m-col-t-6 m-col-m-none">
35+
<li><a href="namespaceRcppThread.html">RcppThread</a></li>
36+
<li><a href="overrides.html">Automatic overrides</a></li>
37+
</ol>
38+
<ol class="m-col-t-6 m-col-m-none" start="3">
39+
<li><a href="https://github.com/tnagler/RcppThread">GitHub</a></li>
40+
<li class="m-show-m"><a href="#search" class="m-doc-search-icon" title="Search" onclick="return showSearch()"><svg style="height: 0.9rem;" viewBox="0 0 16 16">
41+
<use href="#m-doc-search-icon-path" />
42+
</svg></a></li>
43+
</ol>
44+
</div>
45+
</div>
46+
</div>
47+
</div>
48+
</nav></header>
49+
<main><article>
50+
<div class="m-container m-container-inflatable">
51+
<div class="m-row">
52+
<div class="m-col-l-10 m-push-l-1">
53+
<h1>
54+
<span class="m-breadcrumb"><a href="namespacequickpool.html">quickpool</a>::<wbr/></span>TodoList <span class="m-thin">class</span>
55+
</h1>
56+
<p>Todo list - a synchronization primitive.</p>
57+
<div class="m-block m-default">
58+
<h3>Contents</h3>
59+
<ul>
60+
<li>
61+
Reference
62+
<ul>
63+
<li><a href="#typeless-methods">Constructors, destructors, conversion operators</a></li>
64+
<li><a href="#pub-methods">Public functions</a></li>
65+
</ul>
66+
</li>
67+
</ul>
68+
</div>
69+
<p>Add a task with <code>add()</code>, cross it off with <code>cross()</code>, and wait for all tasks to complete with <code>wait()</code>.</p>
70+
<section id="typeless-methods">
71+
<h2><a href="#typeless-methods">Constructors, destructors, conversion operators</a></h2>
72+
<dl class="m-doc">
73+
<dt>
74+
<span class="m-doc-wrap-bumper"><a href="#ad900c395f0ce371f6773206dda4e5407" class="m-doc">TodoList</a>(</span><span class="m-doc-wrap">size_t num_tasks = 0) <span class="m-label m-flat m-success">noexcept</span></span>
75+
</dt>
76+
<dd></dd>
77+
</dl>
78+
</section>
79+
<section id="pub-methods">
80+
<h2><a href="#pub-methods">Public functions</a></h2>
81+
<dl class="m-doc">
82+
<dt>
83+
<span class="m-doc-wrap-bumper">void <a href="#adb2aa12f95bd70c0d68dab45eb73e19e" class="m-doc">add</a>(</span><span class="m-doc-wrap">size_t num_tasks = 1) <span class="m-label m-flat m-success">noexcept</span></span>
84+
</dt>
85+
<dd></dd>
86+
<dt>
87+
<span class="m-doc-wrap-bumper">void <a href="#ad23ce5136b646788f476843bd4d2ef54" class="m-doc">cross</a>(</span><span class="m-doc-wrap">size_t num_tasks = 1)</span>
88+
</dt>
89+
<dd></dd>
90+
<dt id="a4fd16a01633911f5b82c80857ce66527">
91+
<span class="m-doc-wrap-bumper">auto <a href="#a4fd16a01633911f5b82c80857ce66527" class="m-doc-self">empty</a>(</span><span class="m-doc-wrap">) const -&gt; bool <span class="m-label m-flat m-success">noexcept</span></span>
92+
</dt>
93+
<dd>checks whether list is empty.</dd>
94+
<dt>
95+
<span class="m-doc-wrap-bumper">void <a href="#a6711794e2f9f91e1d34f64f82b6cf7f2" class="m-doc">wait</a>(</span><span class="m-doc-wrap">size_t millis = 0)</span>
96+
</dt>
97+
<dd></dd>
98+
<dt>
99+
<span class="m-doc-wrap-bumper">void <a href="#a80d8d12098fb46df66f76bc7c6156e7f" class="m-doc">clear</a>(</span><span class="m-doc-wrap">std::exception_ptr eptr = nullptr) <span class="m-label m-flat m-success">noexcept</span></span>
100+
</dt>
101+
<dd></dd>
102+
</dl>
103+
</section>
104+
<section>
105+
<h2>Function documentation</h2>
106+
<section class="m-doc-details" id="ad900c395f0ce371f6773206dda4e5407"><div>
107+
<h3>
108+
<span class="m-doc-wrap-bumper"> quickpool::<wbr />TodoList::<wbr /></span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#ad900c395f0ce371f6773206dda4e5407" class="m-doc-self">TodoList</a>(</span><span class="m-doc-wrap">size_t num_tasks = 0) <span class="m-label m-success">noexcept</span></span></span>
109+
</h3>
110+
<table class="m-table m-fullwidth m-flat">
111+
<thead>
112+
<tr><th colspan="2">Parameters</th></tr>
113+
</thead>
114+
<tbody>
115+
<tr>
116+
<td style="width: 1%">num_tasks</td>
117+
<td>initial number of tasks.</td>
118+
</tr>
119+
</tbody>
120+
</table>
121+
<p>constructs the todo list.</p>
122+
</div></section>
123+
<section class="m-doc-details" id="adb2aa12f95bd70c0d68dab45eb73e19e"><div>
124+
<h3>
125+
<span class="m-doc-wrap-bumper">void quickpool::<wbr />TodoList::<wbr /></span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#adb2aa12f95bd70c0d68dab45eb73e19e" class="m-doc-self">add</a>(</span><span class="m-doc-wrap">size_t num_tasks = 1) <span class="m-label m-success">noexcept</span></span></span>
126+
</h3>
127+
<table class="m-table m-fullwidth m-flat">
128+
<thead>
129+
<tr><th colspan="2">Parameters</th></tr>
130+
</thead>
131+
<tbody>
132+
<tr>
133+
<td style="width: 1%">num_tasks</td>
134+
<td>add that many tasks to the list.</td>
135+
</tr>
136+
</tbody>
137+
</table>
138+
<p>adds tasks to the list.</p>
139+
</div></section>
140+
<section class="m-doc-details" id="ad23ce5136b646788f476843bd4d2ef54"><div>
141+
<h3>
142+
<span class="m-doc-wrap-bumper">void quickpool::<wbr />TodoList::<wbr /></span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#ad23ce5136b646788f476843bd4d2ef54" class="m-doc-self">cross</a>(</span><span class="m-doc-wrap">size_t num_tasks = 1)</span></span>
143+
</h3>
144+
<table class="m-table m-fullwidth m-flat">
145+
<thead>
146+
<tr><th colspan="2">Parameters</th></tr>
147+
</thead>
148+
<tbody>
149+
<tr>
150+
<td style="width: 1%">num_tasks</td>
151+
<td>cross that many tasks to the list.</td>
152+
</tr>
153+
</tbody>
154+
</table>
155+
<p>crosses tasks from the list.</p>
156+
</div></section>
157+
<section class="m-doc-details" id="a6711794e2f9f91e1d34f64f82b6cf7f2"><div>
158+
<h3>
159+
<span class="m-doc-wrap-bumper">void quickpool::<wbr />TodoList::<wbr /></span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#a6711794e2f9f91e1d34f64f82b6cf7f2" class="m-doc-self">wait</a>(</span><span class="m-doc-wrap">size_t millis = 0)</span></span>
160+
</h3>
161+
<table class="m-table m-fullwidth m-flat">
162+
<thead>
163+
<tr><th colspan="2">Parameters</th></tr>
164+
</thead>
165+
<tbody>
166+
<tr>
167+
<td style="width: 1%">millis</td>
168+
<td>if &gt; 0; waiting aborts after waiting that many milliseconds.</td>
169+
</tr>
170+
</tbody>
171+
</table>
172+
<p>waits for the list to be empty.</p>
173+
</div></section>
174+
<section class="m-doc-details" id="a80d8d12098fb46df66f76bc7c6156e7f"><div>
175+
<h3>
176+
<span class="m-doc-wrap-bumper">void quickpool::<wbr />TodoList::<wbr /></span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#a80d8d12098fb46df66f76bc7c6156e7f" class="m-doc-self">clear</a>(</span><span class="m-doc-wrap">std::exception_ptr eptr = nullptr) <span class="m-label m-success">noexcept</span></span></span>
177+
</h3>
178+
<table class="m-table m-fullwidth m-flat">
179+
<thead>
180+
<tr><th colspan="2">Parameters</th></tr>
181+
</thead>
182+
<tbody>
183+
<tr>
184+
<td style="width: 1%">eptr</td>
185+
<td>(optional) pointer to an active exception to be rethrown by a waiting thread; typically retrieved from <code>std::current_exception()</code>.</td>
186+
</tr>
187+
</tbody>
188+
</table>
189+
<p>clears the list.</p>
190+
</div></section>
191+
</section>
192+
</div>
193+
</div>
194+
</div>
195+
</article></main>
196+
<div class="m-doc-search" id="search">
197+
<a href="#!" onclick="return hideSearch()"></a>
198+
<div class="m-container">
199+
<div class="m-row">
200+
<div class="m-col-m-8 m-push-m-2">
201+
<div class="m-doc-search-header m-text m-small">
202+
<div><span class="m-label m-default">Tab</span> / <span class="m-label m-default">T</span> to search, <span class="m-label m-default">Esc</span> to close</div>
203+
<div id="search-symbolcount">&hellip;</div>
204+
</div>
205+
<div class="m-doc-search-content">
206+
<form>
207+
<input type="search" name="q" id="search-input" placeholder="Loading &hellip;" disabled="disabled" autofocus="autofocus" autocomplete="off" spellcheck="false" />
208+
</form>
209+
<noscript class="m-text m-danger m-text-center">Unlike everything else in the docs, the search functionality <em>requires</em> JavaScript.</noscript>
210+
<div id="search-help" class="m-text m-dim m-text-center">
211+
<p class="m-noindent">Search for symbols, directories, files, pages, OpenGL, GLSL, Vulkan and OpenAL APIs. You can omit any prefix from the symbol or file path; adding a <code>:</code> or <code>/</code> suffix lists all members of given symbol or directory.</p> <p class="m-noindent">Use <span class="m-label m-dim">&darr;</span> / <span class="m-label m-dim">&uarr;</span> to navigate through the list, <span class="m-label m-dim">Enter</span> to go. <span class="m-label m-dim">Tab</span> autocompletes common prefix, you can copy a link to the result using <span class="m-label m-dim"></span> <span class="m-label m-dim">L</span> while <span class="m-label m-dim"></span> <span class="m-label m-dim">M</span> produces a Markdown link.</p>
212+
</div>
213+
<div id="search-notfound" class="m-text m-warning m-text-center">Sorry, nothing was found.</div>
214+
<ul id="search-results"></ul>
215+
</div>
216+
</div>
217+
</div>
218+
</div>
219+
</div>
220+
<script src="search-v1.js"></script>
221+
<script src="searchdata-v1.js" async="async"></script>
222+
<footer><nav>
223+
<div class="m-container">
224+
<div class="m-row">
225+
<div class="m-col-l-10 m-push-l-1">
226+
<p>RcppThread docs. copyright © <a href="http://tnagler.com/">Thomas Nagler</a> 2021.<br />Generated by <a href="https://doxygen.org/">Doxygen</a> 1.8.17 and <a href="https://mcss.mosra.cz/">m.css</a>. Contact the author via <a href="https://github.com/tnagler/RcppThread">GitHub</a> or <a href="mailto:[email protected]">e-mail</a>
227+
</div>
228+
</div>
229+
</div>
230+
</nav></footer>
231+
</body>
232+
</html>

0 commit comments

Comments
 (0)