From 17772ef53e57620f47c426fa4557671a86f1b3ae Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Wed, 30 Mar 2022 13:18:32 -0500 Subject: Eliminate dependence on boost::interprocess #8223 In this repo, `boost::interprocess` was being used soley to make `uint32_t` operations atomic. So I replaced each instance of `boost::interprocess::ipcdetail::atomic(...)32` with `std::atomic` methods. I replaced member declarations as applicable. For example, when I needed to change a `volatile uint32_t` into a `std::atomic`. Sometimes, a member was being used a boolean flag, so I replaced it with `std::atomic`. You may notice that I didn't touch `levin_client_async.h`. That is because this file is entirely unused and will be deleted in PR monero-project#8211. Additional changes from review: * Make some local variables const * Change postfix operators to prefix operators where value was not need --- src/cryptonote_basic/miner.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'src/cryptonote_basic/miner.cpp') 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 #include -#include #include #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; -- cgit v1.2.3