|  | MySQL 9.5.0
    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