MySQL 8.0.40
Source Code Documentation
|
A cell where an individual thread may wait suspended until a resource is released. More...
#include <sync0arr_impl.h>
Public Attributes | |
sync_object_t | latch |
pointer to the object the thread is waiting for; if NULL the cell is free for use More... | |
ulint | request_type = 0 |
lock type requested on the object More... | |
const char * | file = nullptr |
in debug version file where requested More... | |
ulint | line = 0 |
in debug version line where requested More... | |
std::thread::id | thread_id {} |
thread id of this waiting thread More... | |
bool | waiting = false |
true if the thread has already called sync_array_event_wait on this cell More... | |
int64_t | signal_count = 0 |
We capture the signal_count of the latch when we reset the event. More... | |
std::chrono::steady_clock::time_point | reservation_time {} |
Time when the thread reserved the wait cell. More... | |
uint64_t | last_scan {0} |
Odd value means it is currently on-stack in a DFS search for cycles. More... | |
A cell where an individual thread may wait suspended until a resource is released.
The suspending is implemented using an operating system event semaphore.
const char* sync_cell_t::file = nullptr |
in debug version file where requested
uint64_t sync_cell_t::last_scan {0} |
Odd value means it is currently on-stack in a DFS search for cycles.
Even value means it was completely processed. It is set to (odd) arr->last_scan when first visited, and then incremented again when all of its children are processed (and thus it is processed, too).
sync_object_t sync_cell_t::latch |
pointer to the object the thread is waiting for; if NULL the cell is free for use
ulint sync_cell_t::line = 0 |
in debug version line where requested
ulint sync_cell_t::request_type = 0 |
lock type requested on the object
std::chrono::steady_clock::time_point sync_cell_t::reservation_time {} |
Time when the thread reserved the wait cell.
int64_t sync_cell_t::signal_count = 0 |
We capture the signal_count of the latch when we reset the event.
This value is then passed on to os_event_wait and we wait only if the event has not been signalled in the period between the reset and wait call.
std::thread::id sync_cell_t::thread_id {} |
thread id of this waiting thread
bool sync_cell_t::waiting = false |
true if the thread has already called sync_array_event_wait on this cell