X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e7f87282045aad5c82fee922140dc5c60320b87b..4052b6d9960bd9792127d006c4f359b946cb7baa:/src/kernel/context/ContextUnix.cpp diff --git a/src/kernel/context/ContextUnix.cpp b/src/kernel/context/ContextUnix.cpp index ea21e2579e..e3df168a6e 100644 --- a/src/kernel/context/ContextUnix.cpp +++ b/src/kernel/context/ContextUnix.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -8,7 +8,7 @@ #include "ContextUnix.hpp" #include "mc/mc.h" -#include "src/mc/mc_ignore.h" +#include "src/mc/mc_ignore.hpp" #include "src/simix/ActorImpl.hpp" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_context); @@ -188,7 +188,7 @@ void SerialUContext::run_all() #if HAVE_THREAD_CONTEXTS simgrid::xbt::Parmap* ParallelUContext::parmap_; -uintptr_t ParallelUContext::threads_working_; /* number of threads that have started their work */ +std::atomic ParallelUContext::threads_working_; /* number of threads that have started their work */ xbt_os_thread_key_t ParallelUContext::worker_id_key_; /* thread-specific storage for the thread id */ std::vector ParallelUContext::workers_context_; /* space to save the worker's context * in each thread */ @@ -263,7 +263,7 @@ void ParallelUContext::suspend() void ParallelUContext::resume() { // What is my containing body? - uintptr_t worker_id = __sync_fetch_and_add(&threads_working_, 1); + uintptr_t worker_id = threads_working_.fetch_add(1, std::memory_order_relaxed); // Store the number of my containing body in os-thread-specific area : xbt_os_thread_set_specific(worker_id_key_, reinterpret_cast(worker_id)); // Get my current soul: