X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c12bcb8b5522fb451483836ad3fc529696b8860f..d18416a04b075e719e3860a11292b6ac98546949:/src/include/xbt/parmap.hpp?ds=sidebyside diff --git a/src/include/xbt/parmap.hpp b/src/include/xbt/parmap.hpp index b5b72de11e..f37540bbcb 100644 --- a/src/include/xbt/parmap.hpp +++ b/src/include/xbt/parmap.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #if HAVE_FUTEX_H #include @@ -164,19 +165,15 @@ template Parmap::Parmap(unsigned num_workers, e_xbt_parmap_mode_ /* Create the pool of worker threads */ this->workers[0] = nullptr; -#if HAVE_PTHREAD_SETAFFINITY - int core_bind = 0; -#endif + unsigned int core_bind = 0; for (unsigned i = 1; i < num_workers; i++) { ThreadData* data = new ThreadData(*this, i); this->workers[i] = xbt_os_thread_create(nullptr, worker_main, data, nullptr); -#if HAVE_PTHREAD_SETAFFINITY xbt_os_thread_bind(this->workers[i], core_bind); - if (core_bind != xbt_os_get_numcores() - 1) + if (core_bind != std::thread::hardware_concurrency() - 1) core_bind++; else core_bind = 0; -#endif } } @@ -411,7 +408,7 @@ template void Parmap::BusyWaitSynchro::master_signal() template void Parmap::BusyWaitSynchro::master_wait() { while (__atomic_load_n(&this->parmap.thread_counter, __ATOMIC_SEQ_CST) < this->parmap.num_workers) { - xbt_os_thread_yield(); + std::this_thread::yield(); } } @@ -424,7 +421,7 @@ template void Parmap::BusyWaitSynchro::worker_wait(unsigned roun { /* wait for more work */ while (__atomic_load_n(&this->parmap.work_round, __ATOMIC_SEQ_CST) != round) { - xbt_os_thread_yield(); + std::this_thread::yield(); } }