aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_basic
diff options
context:
space:
mode:
Diffstat (limited to 'src/cryptonote_basic')
-rw-r--r--src/cryptonote_basic/miner.cpp15
-rw-r--r--src/cryptonote_basic/miner.h4
2 files changed, 9 insertions, 10 deletions
diff --git a/src/cryptonote_basic/miner.cpp b/src/cryptonote_basic/miner.cpp
index ae514aac6..f35a87d47 100644
--- a/src/cryptonote_basic/miner.cpp
+++ b/src/cryptonote_basic/miner.cpp
@@ -30,7 +30,6 @@
#include <sstream>
#include <numeric>
-#include <boost/interprocess/detail/atomic.hpp>
#include <boost/algorithm/string.hpp>
#include "misc_language.h"
#include "syncobj.h"
@@ -271,13 +270,13 @@ namespace cryptonote
// restart all threads
{
CRITICAL_REGION_LOCAL(m_threads_lock);
- boost::interprocess::ipcdetail::atomic_write32(&m_stop, 1);
+ m_stop = true;
while (m_threads_active > 0)
misc_utils::sleep_no_w(100);
m_threads.clear();
}
- boost::interprocess::ipcdetail::atomic_write32(&m_stop, 0);
- boost::interprocess::ipcdetail::atomic_write32(&m_thread_index, 0);
+ m_stop = false;
+ m_thread_index = 0;
for(size_t i = 0; i != m_threads_total; i++)
m_threads.push_back(boost::thread(m_attrs, boost::bind(&miner::worker_thread, this)));
}
@@ -394,8 +393,8 @@ namespace cryptonote
request_block_template();//lets update block template
- boost::interprocess::ipcdetail::atomic_write32(&m_stop, 0);
- boost::interprocess::ipcdetail::atomic_write32(&m_thread_index, 0);
+ m_stop = false;
+ m_thread_index = 0;
set_is_background_mining_enabled(do_background);
set_ignore_battery(ignore_battery);
@@ -435,7 +434,7 @@ namespace cryptonote
//-----------------------------------------------------------------------------------------------------
void miner::send_stop_signal()
{
- boost::interprocess::ipcdetail::atomic_write32(&m_stop, 1);
+ m_stop = true;
}
extern "C" void rx_stop_mining(void);
//-----------------------------------------------------------------------------------------------------
@@ -524,7 +523,7 @@ namespace cryptonote
//-----------------------------------------------------------------------------------------------------
bool miner::worker_thread()
{
- uint32_t th_local_index = boost::interprocess::ipcdetail::atomic_inc32(&m_thread_index);
+ const uint32_t th_local_index = m_thread_index++; // atomically increment, getting value before increment
MLOG_SET_THREAD_NAME(std::string("[miner ") + std::to_string(th_local_index) + "]");
MGINFO("Miner thread was started ["<< th_local_index << "]");
uint32_t nonce = m_starter_nonce + th_local_index;
diff --git a/src/cryptonote_basic/miner.h b/src/cryptonote_basic/miner.h
index df3f56f68..5da81e3d1 100644
--- a/src/cryptonote_basic/miner.h
+++ b/src/cryptonote_basic/miner.h
@@ -118,14 +118,14 @@ namespace cryptonote
};
- volatile uint32_t m_stop;
+ std::atomic<bool> m_stop;
epee::critical_section m_template_lock;
block m_template;
std::atomic<uint32_t> m_template_no;
std::atomic<uint32_t> m_starter_nonce;
difficulty_type m_diffic;
uint64_t m_height;
- volatile uint32_t m_thread_index;
+ std::atomic<uint32_t> m_thread_index;
volatile uint32_t m_threads_total;
std::atomic<uint32_t> m_threads_active;
std::atomic<int32_t> m_pausers_count;