diff --git a/src/backend/cpu/CpuBackend.cpp b/src/backend/cpu/CpuBackend.cpp index 529b14e23..ead131a2e 100644 --- a/src/backend/cpu/CpuBackend.cpp +++ b/src/backend/cpu/CpuBackend.cpp @@ -180,11 +180,11 @@ public: } # endif - mutex.lock(); + { + std::lock_guard<std::mutex> lock(mutex); - pages += status.hugePages(); - - mutex.unlock(); + pages += status.hugePages(); + } rapidjson::Value hugepages; @@ -380,14 +380,14 @@ void xmrig::CpuBackend::setJob(const Job &job) void xmrig::CpuBackend::start(IWorker *worker, bool ready) { - mutex.lock(); + { + std::lock_guard<std::mutex> lock(mutex); - if (d_ptr->status.started(worker, ready)) { - d_ptr->status.print(); + if (d_ptr->status.started(worker, ready)) { + d_ptr->status.print(); + } } - mutex.unlock(); - if (ready) { worker->start(); } diff --git a/src/backend/cuda/CudaBackend.cpp b/src/backend/cuda/CudaBackend.cpp index 621563e11..aef564c4f 100644 --- a/src/backend/cuda/CudaBackend.cpp +++ b/src/backend/cuda/CudaBackend.cpp @@ -465,16 +465,17 @@ void xmrig::CudaBackend::setJob(const Job &job) void xmrig::CudaBackend::start(IWorker *worker, bool ready) { - mutex.lock(); + { + std::lock_guard<std::mutex> lock(mutex); - if (d_ptr->status.started(ready)) { - d_ptr->status.print(); + if (d_ptr->status.started(ready)) { + d_ptr->status.print(); + + CudaWorker::ready = true; + } - CudaWorker::ready = true; } - mutex.unlock(); - if (ready) { worker->start(); } diff --git a/src/backend/opencl/OclBackend.cpp b/src/backend/opencl/OclBackend.cpp index 820c63d4c..99fe0d590 100644 --- a/src/backend/opencl/OclBackend.cpp +++ b/src/backend/opencl/OclBackend.cpp @@ -447,16 +447,16 @@ void xmrig::OclBackend::setJob(const Job &job) void xmrig::OclBackend::start(IWorker *worker, bool ready) { - mutex.lock(); + { + std::lock_guard<std::mutex> lock(mutex); - if (d_ptr->status.started(ready)) { - d_ptr->status.print(); + if (d_ptr->status.started(ready)) { + d_ptr->status.print(); - OclWorker::ready = true; + OclWorker::ready = true; + } } - mutex.unlock(); - if (ready) { worker->start(); } diff --git a/src/core/Miner.cpp b/src/core/Miner.cpp index 1f99b943f..176473426 100644 --- a/src/core/Miner.cpp +++ b/src/core/Miner.cpp @@ -569,7 +569,14 @@ void xmrig::Miner::setJob(const Job &job, bool donate) d_ptr->algorithm = job.algorithm(); - mutex.lock(); +# ifdef XMRIG_ALGO_RANDOMX + bool ready = false; +# else + constexpr const bool ready = true; +# endif + + { + std::lock_guard<std::mutex> lock(mutex); const uint8_t index = donate ? 1 : 0; @@ -588,14 +595,12 @@ void xmrig::Miner::setJob(const Job &job, bool donate) } # ifdef XMRIG_ALGO_RANDOMX - const bool ready = d_ptr->initRX(); + ready = d_ptr->initRX(); // Always reset nonce on RandomX dataset change if (!ready) { d_ptr->reset = true; } -# else - constexpr const bool ready = true; # endif # ifdef XMRIG_ALGO_GHOSTRIDER @@ -604,7 +609,7 @@ void xmrig::Miner::setJob(const Job &job, bool donate) } # endif - mutex.unlock(); + } d_ptr->active = true; d_ptr->m_taskbar.setActive(true);