45 #include <type_traits> 97 return reinterpret_cast<std::atomic<uint8_t>*
>(&this->
lock_);
101 return std::atomic_compare_exchange_strong_explicit(
105 std::memory_order_acquire,
106 std::memory_order_relaxed);
111 "MicroSpinLock must be kept a POD type.");
122 #define FOLLY_CACHE_LINE_SIZE 64 124 template <
class T,
size_t N>
146 "Invalid size of PaddedSpinLock");
152 "T can cross cache line boundaries");
155 std::array<PaddedSpinLock, N>
data_;
std::atomic< uint8_t > * payload() noexcept
constexpr size_t size() const noexcept
bool cas(uint8_t compare, uint8_t newVal) noexcept
std::lock_guard< MicroSpinLock > MSLGuard
—— Concurrent Priority Queue Implementation ——
requires E e noexcept(noexcept(s.error(std::move(e))))
T & operator[](size_t i) noexcept
constexpr std::size_t max_align_v
#define FOLLY_CACHE_LINE_SIZE
std::array< PaddedSpinLock, N > data_
static const char *const value
const T & operator[](size_t i) const noexcept