mirror of
https://github.com/SChernykh/p2pool.git
synced 2024-11-17 00:07:47 +00:00
Miner code cleanup
This commit is contained in:
parent
e2931f94b5
commit
c10a5ce323
2 changed files with 12 additions and 11 deletions
|
@ -26,6 +26,8 @@
|
|||
|
||||
static constexpr char log_category_prefix[] = "Miner ";
|
||||
|
||||
using namespace std::chrono;
|
||||
|
||||
namespace p2pool {
|
||||
|
||||
Miner::Miner(p2pool* pool, uint32_t threads)
|
||||
|
@ -33,13 +35,13 @@ Miner::Miner(p2pool* pool, uint32_t threads)
|
|||
, m_threads(threads)
|
||||
, m_stopped(false)
|
||||
, m_nonce(0)
|
||||
, m_nonceTimestamp(std::chrono::high_resolution_clock::now())
|
||||
, m_nonceTimestamp(high_resolution_clock::now())
|
||||
, m_extraNonce(0xF19E3779U)
|
||||
, m_job{}
|
||||
, m_jobIndex(0)
|
||||
{
|
||||
on_block(m_pool->block_template());
|
||||
|
||||
m_minerThreads.clear();
|
||||
m_minerThreads.reserve(threads);
|
||||
|
||||
for (uint32_t i = 0; i < threads; ++i) {
|
||||
|
@ -62,15 +64,12 @@ Miner::~Miner()
|
|||
uv_thread_join(&data->m_worker);
|
||||
delete data;
|
||||
}
|
||||
|
||||
m_minerThreads.clear();
|
||||
}
|
||||
|
||||
void Miner::print_status()
|
||||
{
|
||||
const uint32_t hash_count = 0 - m_nonce.load();
|
||||
|
||||
using namespace std::chrono;
|
||||
const double dt = static_cast<double>(duration_cast<nanoseconds>(high_resolution_clock::now() - m_nonceTimestamp).count()) / 1e9;
|
||||
const uint64_t hr = (dt > 0.0) ? static_cast<uint64_t>(hash_count / dt) : 0;
|
||||
|
||||
|
@ -82,12 +81,13 @@ void Miner::print_status()
|
|||
|
||||
void Miner::on_block(const BlockTemplate& block)
|
||||
{
|
||||
Job j;
|
||||
const uint32_t next_index = m_jobIndex ^ 1;
|
||||
Job& j = m_job[next_index];
|
||||
hash seed;
|
||||
j.m_blobSize = block.get_hashing_blob(m_extraNonce, j.m_blob, j.m_height, j.m_diff, j.m_sidechainDiff, seed, j.m_nonceOffset, j.m_templateId);
|
||||
memcpy(&m_job, &j, sizeof(j));
|
||||
m_nonce.exchange(0);
|
||||
m_nonceTimestamp = std::chrono::high_resolution_clock::now();
|
||||
m_jobIndex = next_index;
|
||||
m_nonceTimestamp = high_resolution_clock::now();
|
||||
}
|
||||
|
||||
void Miner::run(void* data)
|
||||
|
@ -151,14 +151,14 @@ void Miner::run(WorkerData* data)
|
|||
|
||||
if (first) {
|
||||
first = false;
|
||||
memcpy(&job[index], &miner->m_job, sizeof(m_job));
|
||||
memcpy(&job[index], &miner->m_job[miner->m_jobIndex], sizeof(Job));
|
||||
job[index].set_nonce(miner->m_nonce.fetch_sub(1), miner->m_extraNonce);
|
||||
randomx_calculate_hash_first(vm, job[index].m_blob, job[index].m_blobSize);
|
||||
}
|
||||
|
||||
const Job& j = job[index];
|
||||
index ^= 1;
|
||||
memcpy(&job[index], &miner->m_job, sizeof(m_job));
|
||||
memcpy(&job[index], &miner->m_job[miner->m_jobIndex], sizeof(Job));
|
||||
job[index].set_nonce(miner->m_nonce.fetch_sub(1), miner->m_extraNonce);
|
||||
|
||||
hash h;
|
||||
|
|
|
@ -69,7 +69,8 @@ private:
|
|||
|
||||
void set_nonce(uint32_t nonce, uint32_t extra_nonce);
|
||||
};
|
||||
Job m_job;
|
||||
Job m_job[2];
|
||||
volatile uint32_t m_jobIndex;
|
||||
|
||||
void run(WorkerData* data);
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue