Fixed setThreadAffinity()

Added 1 ms sleep to guarantee thread rescheduling to the correct CPU core before returning.
This commit is contained in:
SChernykh 2020-01-28 19:39:02 +01:00
parent 23a1ae0337
commit 269d12d1be
4 changed files with 18 additions and 5 deletions

View file

@ -28,6 +28,7 @@
#include <stdlib.h>
#include <sys/resource.h>
#include <uv.h>
#include <thread>
#include "base/kernel/Platform.h"
@ -67,7 +68,9 @@ bool xmrig::Platform::setThreadAffinity(uint64_t cpu_id)
thread_affinity_policy_data_t policy = { static_cast<integer_t>(cpu_id) };
mach_thread = pthread_mach_thread_np(pthread_self());
return thread_policy_set(mach_thread, THREAD_AFFINITY_POLICY, (thread_policy_t)&policy, 1) == KERN_SUCCESS;
const bool result = (thread_policy_set(mach_thread, THREAD_AFFINITY_POLICY, (thread_policy_t)&policy, 1) == KERN_SUCCESS);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
return result;
}
#endif