26#ifndef ROUTER_SRC_JIT_EXECUTOR_UTILS_ATOMIC_FLAG_H_
27#define ROUTER_SRC_JIT_EXECUTOR_UTILS_ATOMIC_FLAG_H_
35#if defined(__cpp_lib_atomic_flag_test)
37class atomic_flag :
public std::atomic_flag {
39 using std::atomic_flag::atomic_flag;
42 using std::atomic_flag::notify_all;
43 using std::atomic_flag::notify_one;
47#elif 2 == ATOMIC_BOOL_LOCK_FREE
54 constexpr atomic_flag() noexcept = default;
56 atomic_flag(const atomic_flag &) = delete;
58 atomic_flag &operator=(const atomic_flag &) = delete;
59 atomic_flag &operator=(const atomic_flag &) volatile = delete;
61 ~atomic_flag() noexcept = default;
64 std::memory_order order =
std::memory_order_seq_cst) volatile noexcept {
65 m_flag.store(
false, order);
69 std::memory_order order = std::memory_order_seq_cst)
noexcept {
70 m_flag.store(
false, order);
73 inline bool test_and_set(
74 std::memory_order order = std::memory_order_seq_cst)
volatile noexcept {
75 return m_flag.exchange(
true, order);
78 inline bool test_and_set(
79 std::memory_order order = std::memory_order_seq_cst)
noexcept {
80 return m_flag.exchange(
true, order);
83 inline bool test(std::memory_order order = std::memory_order_seq_cst)
const
85 return m_flag.load(order);
89 std::memory_order order = std::memory_order_seq_cst)
const noexcept {
90 return m_flag.load(order);
94 std::atomic_bool m_flag;
98#error "Missing implementation of shcore::atomic_flag"
static int wait(mysql_cond_t *that, mysql_mutex_t *mutex_arg, const char *, unsigned int)
Definition: mysql_cond_v1_native.cc:62
static mysql_service_status_t clear(reference_caching_channel channel) noexcept
Definition: component.cc:146
Definition: file_system_exceptions.h:34
Definition: gcs_xcom_synode.h:64