/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/messagebus/misc/atomic_box.h
34 строки
719 B
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#pragma once #include <library/cpp/deprecated/atomic/atomic.h> // TAtomic with human interface template <typename T> class TAtomicBox { private: union { TAtomic Value; // when T is enum, it is convenient to inspect its content in gdb T ValueForDebugger; }; static_assert(sizeof(T) <= sizeof(TAtomic), "expect sizeof(T) <= sizeof(TAtomic)"); public: TAtomicBox(T value = T()) : Value(value) { } void Set(T value) { AtomicSet(Value, (TAtomic)value); } T Get() const { return (T)AtomicGet(Value); } bool CompareAndSet(T expected, T set) { return AtomicCas(&Value, (TAtomicBase)set, (TAtomicBase)expected); } };