From ead82cdba9fdd9852f7bdb0eb9408d85d8035932 Mon Sep 17 00:00:00 2001 From: 4ertus2 Date: Sun, 20 Oct 2024 23:19:09 +0300 Subject: [PATCH] prevent manual mutex lock/unlock --- src/backend/cpu/CpuBackend.cpp | 18 +++++++++--------- src/backend/cuda/CudaBackend.cpp | 13 +++++++------ src/backend/opencl/OclBackend.cpp | 12 ++++++------ src/core/Miner.cpp | 15 ++++++++++----- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/src/backend/cpu/CpuBackend.cpp b/src/backend/cpu/CpuBackend.cpp index 529b14e2..ead131a2 100644 --- a/src/backend/cpu/CpuBackend.cpp +++ b/src/backend/cpu/CpuBackend.cpp @@ -180,11 +180,11 @@ public: } # endif - mutex.lock(); + { + std::lock_guard 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 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 5a732ae1..260757d4 100644 --- a/src/backend/cuda/CudaBackend.cpp +++ b/src/backend/cuda/CudaBackend.cpp @@ -452,16 +452,17 @@ void xmrig::CudaBackend::setJob(const Job &job) void xmrig::CudaBackend::start(IWorker *worker, bool ready) { - mutex.lock(); + { + std::lock_guard 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 493ad4c8..06bbf29e 100644 --- a/src/backend/opencl/OclBackend.cpp +++ b/src/backend/opencl/OclBackend.cpp @@ -438,16 +438,16 @@ void xmrig::OclBackend::setJob(const Job &job) void xmrig::OclBackend::start(IWorker *worker, bool ready) { - mutex.lock(); + { + std::lock_guard 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 e2b1d596..fa3f6b14 100644 --- a/src/core/Miner.cpp +++ b/src/core/Miner.cpp @@ -556,7 +556,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 lock(mutex); const uint8_t index = donate ? 1 : 0; @@ -575,14 +582,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 @@ -591,7 +596,7 @@ void xmrig::Miner::setJob(const Job &job, bool donate) } # endif - mutex.unlock(); + } d_ptr->active = true; d_ptr->m_taskbar.setActive(true);