mirror of
https://github.com/SChernykh/p2pool.git
synced 2025-04-16 18:41:54 +00:00
Refactor PoolBlock's lock code
This commit is contained in:
parent
4a9ccaa62d
commit
1029faa02f
3 changed files with 12 additions and 8 deletions
|
@ -29,13 +29,7 @@ LOG_CATEGORY(PoolBlock)
|
|||
|
||||
namespace p2pool {
|
||||
|
||||
uv_rwlock_t PoolBlock::s_precalculatedSharesLock;
|
||||
|
||||
static struct PrecalculatedLockInit
|
||||
{
|
||||
FORCEINLINE PrecalculatedLockInit() { uv_rwlock_init(&PoolBlock::s_precalculatedSharesLock); }
|
||||
FORCEINLINE ~PrecalculatedLockInit() { uv_rwlock_destroy(&PoolBlock::s_precalculatedSharesLock); }
|
||||
} precalculated_lock_init;
|
||||
ReadWriteLock PoolBlock::s_precalculatedSharesLock;
|
||||
|
||||
PoolBlock::PoolBlock()
|
||||
: m_majorVersion(0)
|
||||
|
|
|
@ -162,7 +162,7 @@ struct PoolBlock
|
|||
|
||||
bool m_precalculated;
|
||||
|
||||
static uv_rwlock_t s_precalculatedSharesLock;
|
||||
static ReadWriteLock s_precalculatedSharesLock;
|
||||
std::vector<MinerShare> m_precalculatedShares;
|
||||
|
||||
uint64_t m_localTimestamp;
|
||||
|
|
|
@ -25,6 +25,16 @@ static_assert(sizeof(in_addr) == 4, "struct in_addr has invalid size");
|
|||
|
||||
namespace p2pool {
|
||||
|
||||
struct ReadWriteLock : public nocopy_nomove {
|
||||
FORCEINLINE ReadWriteLock() { uv_rwlock_init(&m_lock); }
|
||||
FORCEINLINE ~ReadWriteLock() { uv_rwlock_destroy(&m_lock); }
|
||||
|
||||
FORCEINLINE operator uv_rwlock_t&() { return m_lock; }
|
||||
|
||||
private:
|
||||
uv_rwlock_t m_lock;
|
||||
};
|
||||
|
||||
struct MutexLock : public nocopy_nomove
|
||||
{
|
||||
explicit FORCEINLINE MutexLock(uv_mutex_t& handle) : m_handle(&handle) { uv_mutex_lock(&handle); }
|
||||
|
|
Loading…
Reference in a new issue