From 8bbdd45b9e63f6622ee2eac8f9dd0cd881a78aa4 Mon Sep 17 00:00:00 2001 From: fireice-uk Date: Thu, 12 Oct 2017 12:52:50 +0100 Subject: Affinity - fix C --- xmrstak/backend/cpu/minethd.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'xmrstak/backend/cpu/minethd.cpp') diff --git a/xmrstak/backend/cpu/minethd.cpp b/xmrstak/backend/cpu/minethd.cpp index 51091bf..3059891 100644 --- a/xmrstak/backend/cpu/minethd.cpp +++ b/xmrstak/backend/cpu/minethd.cpp @@ -101,12 +101,15 @@ minethd::minethd(miner_work& pWork, size_t iNo, bool double_work, bool no_prefet bNoPrefetch = no_prefetch; this->affinity = affinity; - std::lock_guard lock(work_thd_mtx); + std::future order_guard = order_fix.get_future(); + if(double_work) oWorkThd = std::thread(&minethd::double_work_main, this); else oWorkThd = std::thread(&minethd::work_main, this); + order_guard.wait(); + if(!thd_setaffinity(oWorkThd.native_handle(), affinity)) printer::inst()->print_msg(L1, "WARNING setting affinity failed."); } @@ -305,8 +308,6 @@ minethd::cn_hash_fun minethd::func_selector(bool bHaveAes, bool bNoPrefetch) void minethd::pin_thd_affinity() { - std::lock_guard lock(work_thd_mtx); - // pin memory to NUMA node bindMemoryToNUMANode(affinity); } @@ -316,6 +317,8 @@ void minethd::work_main() if(affinity >= 0) //-1 means no affinity pin_thd_affinity(); + order_fix.set_value(); + cn_hash_fun hash_fun; cryptonight_ctx* ctx; uint64_t iCount = 0; -- cgit v1.1