A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use std::atomic::fetch_add instead of ++ shortcut (clearer to the reader).
[simgrid.git]
/
src
/
include
/
xbt
/
parmap.hpp
diff --git
a/src/include/xbt/parmap.hpp
b/src/include/xbt/parmap.hpp
index
dd5037f
..
00f4b8c
100644
(file)
--- a/
src/include/xbt/parmap.hpp
+++ b/
src/include/xbt/parmap.hpp
@@
-90,7
+90,6
@@
private:
*/
virtual void worker_wait(unsigned) = 0;
*/
virtual void worker_wait(unsigned) = 0;
- protected:
Parmap<T>& parmap;
};
Parmap<T>& parmap;
};
@@
-225,7
+224,7
@@
template <typename T> void Parmap<T>::apply(void (*fun)(T), const std::vector<T>
*/
template <typename T> boost::optional<T> Parmap<T>::next()
{
*/
template <typename T> boost::optional<T> Parmap<T>::next()
{
- unsigned index = this->index
++
;
+ unsigned index = this->index
.fetch_add(1, std::memory_order_relaxed)
;
if (index < this->data->size())
return (*this->data)[index];
else
if (index < this->data->size())
return (*this->data)[index];
else
@@
-237,11
+236,11
@@
template <typename T> boost::optional<T> Parmap<T>::next()
*/
template <typename T> void Parmap<T>::work()
{
*/
template <typename T> void Parmap<T>::work()
{
- unsigned index = this->index++;
unsigned length = this->data->size();
unsigned length = this->data->size();
+ unsigned index = this->index.fetch_add(1, std::memory_order_relaxed);
while (index < length) {
this->fun((*this->data)[index]);
while (index < length) {
this->fun((*this->data)[index]);
- index = this->index
++
;
+ index = this->index
.fetch_add(1, std::memory_order_relaxed)
;
}
}
}
}