diff options
author | fireice-uk <fireice-uk@users.noreply.github.com> | 2017-10-12 12:52:50 +0100 |
---|---|---|
committer | fireice-uk <fireice-uk@users.noreply.github.com> | 2017-10-12 12:52:50 +0100 |
commit | 8bbdd45b9e63f6622ee2eac8f9dd0cd881a78aa4 (patch) | |
tree | 405f14b961e249a755d1682477441047f54a3f8b /xmrstak/backend/cpu | |
parent | 73482f3065af13de1140308f65371d059df7decf (diff) | |
download | xmr-stak-8bbdd45b9e63f6622ee2eac8f9dd0cd881a78aa4.zip xmr-stak-8bbdd45b9e63f6622ee2eac8f9dd0cd881a78aa4.tar.gz |
Affinity - fix C
Diffstat (limited to 'xmrstak/backend/cpu')
-rw-r--r-- | xmrstak/backend/cpu/minethd.cpp | 9 | ||||
-rw-r--r-- | xmrstak/backend/cpu/minethd.hpp | 4 |
2 files changed, 8 insertions, 5 deletions
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<std::mutex> lock(work_thd_mtx); + std::future<void> 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<std::mutex> 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; diff --git a/xmrstak/backend/cpu/minethd.hpp b/xmrstak/backend/cpu/minethd.hpp index ad75d07..c023fcb 100644 --- a/xmrstak/backend/cpu/minethd.hpp +++ b/xmrstak/backend/cpu/minethd.hpp @@ -8,7 +8,7 @@ #include <thread> #include <vector> #include <atomic> -#include <mutex> +#include <future> namespace xmrstak { @@ -46,7 +46,7 @@ private: miner_work oWork; void pin_thd_affinity(); - std::mutex work_thd_mtx; + std::promise<void> order_fix; std::thread oWorkThd; int64_t affinity; |