61 std::shared_ptr<std::atomic<State>>
m_state;
63 void init(std::promise<void> &promise);
93template <
typename T_thing,
typename T_digit>
108 memcpy(buff, &
id,
sizeof(T_thing));
111 memcpy(&x, buff + i *
sizeof(T_digit),
sizeof(T_digit));
123 for (
size_t i = 0; i <
acc.size(); ++i) {
124 T_digit x =
acc[i].load(std::memory_order_acquire);
125 memcpy(buff + i *
sizeof(T_digit), &x,
sizeof(T_digit));
127 memcpy(&res, buff,
sizeof(T_thing));
150 Scoped_event() : m_event(CreateEvent(
nullptr,
TRUE,
FALSE,
nullptr)) {
159 if (m_event !=
NULL) {
160 CloseHandle(m_event);
164 HANDLE get_handle()
const {
return m_event; }
174 std::conditional<
sizeof(
std::thread::id) >=
sizeof(uint64_t), uint64_t,
A class to allow any trivially copyable object to be XOR'ed.
Definition: os0thread.h:94
static constexpr size_t digits_count
Definition: os0thread.h:132
T_thing recover_if_single()
Returns an object that was XOR'ed odd number of times.
Definition: os0thread.h:120
Atomic_xor_of_things()
Definition: os0thread.h:96
void xor_thing(T_thing id)
Definition: os0thread.h:104
std::array< std::atomic< T_digit >, digits_count > acc
Definition: os0thread.h:137
Wrapper for a callable, it will count the number of registered Runnable instances and will register t...
Definition: os0thread-create.h:165
Definition: os0thread.h:47
void set_state(State state)
Definition: os0thread.cc:103
std::shared_ptr< std::atomic< State > > m_state
Definition: os0thread.h:61
std::shared_future< void > m_shared_future
Definition: os0thread.h:60
void init(std::promise< void > &promise)
Definition: os0thread.cc:98
State
Definition: os0thread.h:49
void wait(State state_to_wait_for=State::STOPPED)
Definition: os0thread.cc:85
void start()
Definition: os0thread.cc:58
void join()
Definition: os0thread.cc:96
State state() const
Definition: os0thread.h:51
A utility class which, if inherited from, prevents the descendant class from being copied,...
Definition: ut0class_life_cycle.h:41
static my_thread_id thread_id
Definition: my_thr_init.cc:63
int native_handle_type
Definition: socket_constants.h:51
pid_type get_id()
Definition: process.h:48
This file contains a set of libraries providing overloads for regular dynamic allocation routines whi...
Definition: aligned_alloc.h:48
const thread_local size_t this_thread_hash
The hash value of the current thread's id.
Definition: os0thread.h:74
constexpr T div_ceil(T numerator, T denominator)
Computes the result of division rounded towards positive infinity.
Definition: ut0math.h:83
std::conditional< sizeof(std::thread::id) >=sizeof(uint64_t), uint64_t, uint32_t >::type Xor_digit_for_thread_id
A type for std::thread::id digit to store XOR efficiently.
Definition: os0thread.h:175
std::thread::native_handle_type os_thread_id_t
Operating system thread native handle.
Definition: os0thread.h:70
std::string to_string(std::thread::id thread_id, bool hex_value=false)
Returns the string representation of the thread ID supplied.
Definition: os0thread.cc:108
required string type
Definition: replication_group_member_actions.proto:34
#define NULL
Definition: types.h:55
#define TRUE
Definition: types.h:51
#define FALSE
Definition: types.h:47
Utilities related to class lifecycle.
Debug utilities for Innobase.
#define ut_a(EXPR)
Abort execution if EXPR does not evaluate to nonzero.
Definition: ut0dbg.h:57
#define HANDLE
Definition: violite.h:159
unsigned long id[MAX_DEAD]
Definition: xcom_base.cc:510