134 _threadid = std::this_thread::get_id();
141 return _latch == other.
_latch &&
145 void print(ostream& o)
const;
168 static void on_thread_destroy();
171 ostream&
print(ostream&)
const;
174 inline const void*
id()
const {
179 inline void setname(
const char*
const desc);
192 w_rc_t upgrade_if_not_block(
bool& would_block);
210 bool is_latched()
const;
226 int num_holders()
const;
229 bool is_mine()
const;
232 int held_by_me()
const;
237 static const char*
const latch_mode_str[4];
277 return _lock.is_locked();
282 return _lock.num_holders();
287 switch (_lock.mode()) {
bool operator==(latch_holder_t const &other) const
Definition: latch.h:137
void print(ostream &o) const
Definition: latch.cpp:556
int64_t q_ticket_t
type of a Q mode ticket; exact type and location of definition TBD
Definition: latch.h:86
static __thread latch_holder_t * thread_local_holders
Linked list of all latches held by this thread.
Definition: latch.h:108
#define w_assert1(x)
Level 1 should not add significant extra time.
Definition: w_base.h:198
latch_holder_t * _prev
Definition: latch.h:126
latch_holder_t & operator=(latch_holder_t const &other)
Indicates a latch is held by this thread.
Definition: latch.h:105
Definition: latches.h:372
int _count
Definition: latch.h:116
latch_holder_t()
Definition: latch.h:130
bool is_latched() const
Unreliable, but helpful for some debugging.
Definition: latch.h:268
static constexpr int WAIT_FOREVER
Definition: timeout.h:28
void print_latch(const latch_t *l)
Definition: latch.cpp:610
Definition: latches.h:374
A short-term hold (exclusive or shared) on a page.
Definition: latch.h:159
static __thread latch_holder_t * thread_local_freelist
Pool of unused latch_holder_t instances.
Definition: latch.h:110
Return code for most functions and methods.
Definition: w_rc.h:87
uint32_t _total_count
Definition: latch.h:264
ostream & operator<<(ostream &, const latch_t &)
Definition: latch.cpp:605
Definition: latches.h:373
latch_holder_t * _next
Definition: latch.h:128
latch_mode_t mode() const
EX, SH, or NL (if not held at all).
Definition: latch.h:286
const void * id() const
Definition: latch.h:174
void print_my_latches()
Definition: latch.cpp:617
int num_holders() const
How many threads hold the R/W lock.
Definition: latch.h:281
latch_mode_t
Definition: latch.h:79
latch_t * _latch
Definition: latch.h:112
latch_mode_t _mode
Definition: latch.h:114
srwlock_t _lock
Definition: latch.h:257
std::thread::id _threadid
Definition: latch.h:119
Shore read-write lock:: many-reader/one-writer spin lock.
Definition: latches.h:350
int latch_cnt() const
Number of acquires. A thread may hold more than once.
Definition: latch.h:221