#include <boost/optional.hpp>
#include <condition_variable>
#include <mutex>
+#include <thread>
#if HAVE_FUTEX_H
#include <linux/futex.h>
/* 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
}
}
template <typename T> void Parmap<T>::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();
}
}
{
/* wait for more work */
while (__atomic_load_n(&this->parmap.work_round, __ATOMIC_SEQ_CST) != round) {
- xbt_os_thread_yield();
+ std::this_thread::yield();
}
}