X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ec4fa94c499ef2a6051ef5ca3fb5278ca0d219bd..879739b6c2f24a8b70338b0f15ca4391fc4f5784:/src/kernel/context/ContextBoost.cpp diff --git a/src/kernel/context/ContextBoost.cpp b/src/kernel/context/ContextBoost.cpp index a9422e0d0c..1d26b050db 100644 --- a/src/kernel/context/ContextBoost.cpp +++ b/src/kernel/context/ContextBoost.cpp @@ -202,7 +202,7 @@ void SerialBoostContext::run_all() #if HAVE_THREAD_CONTEXTS simgrid::xbt::Parmap* ParallelBoostContext::parmap_; -uintptr_t ParallelBoostContext::threads_working_; +std::atomic ParallelBoostContext::threads_working_; xbt_os_thread_key_t ParallelBoostContext::worker_id_key_; std::vector ParallelBoostContext::workers_context_; @@ -254,7 +254,7 @@ void ParallelBoostContext::suspend() void ParallelBoostContext::resume() { - uintptr_t worker_id = __sync_fetch_and_add(&threads_working_, 1); + uintptr_t worker_id = threads_working_.fetch_add(1, std::memory_order_relaxed); xbt_os_thread_set_specific(worker_id_key_, reinterpret_cast(worker_id)); ParallelBoostContext* worker_context = static_cast(SIMIX_context_self());