diff --git a/ydb/library/actors/memory_log/memlog.cpp b/ydb/library/actors/memory_log/memlog.cpp index c950d62a2de9..617b9386457a 100644 --- a/ydb/library/actors/memory_log/memlog.cpp +++ b/ydb/library/actors/memory_log/memlog.cpp @@ -98,7 +98,7 @@ unsigned TMemoryLog::GetSelfCpu() noexcept { #endif } -TMemoryLog* TMemoryLog::MemLogBuffer = nullptr; +std::atomic TMemoryLog::MemLogBuffer = nullptr; Y_POD_THREAD(TThread::TId) TMemoryLog::LogThreadId; char* TMemoryLog::LastMarkIsHere = nullptr; diff --git a/ydb/library/actors/memory_log/memlog.h b/ydb/library/actors/memory_log/memlog.h index bf4e115c498a..835a659af69f 100644 --- a/ydb/library/actors/memory_log/memlog.h +++ b/ydb/library/actors/memory_log/memlog.h @@ -42,7 +42,7 @@ class TMemoryLog { static constexpr size_t LAST_MARK_SIZE = sizeof(DEFAULT_LAST_MARK); inline static TMemoryLog* GetMemoryLogger() noexcept { - return AtomicGet(MemLogBuffer); + return MemLogBuffer.load(std::memory_order_acquire); } void* GetWriteBuffer(size_t amount) noexcept; @@ -63,11 +63,11 @@ class TMemoryLog { size_t totalSize = DEFAULT_TOTAL_SIZE, size_t grainSize = DEFAULT_GRAIN_SIZE) Y_COLD { - if (AtomicGet(MemLogBuffer) != nullptr) { + if (MemLogBuffer.load(std::memory_order_acquire) != nullptr) { return; } - AtomicSet(MemLogBuffer, new TMemoryLog(totalSize, grainSize)); + MemLogBuffer.store(new TMemoryLog(totalSize, grainSize), std::memory_order_release); } static std::atomic PrintLastMark; @@ -163,7 +163,7 @@ class TMemoryLog { static unsigned GetSelfCpu() noexcept; - static TMemoryLog* MemLogBuffer; + static std::atomic MemLogBuffer; static Y_POD_THREAD(TThread::TId) LogThreadId; static char* LastMarkIsHere; };