pub struct Waiters { /* private fields */ }Expand description
Every parked client, oldest first.
The order is the order they blocked in and it is the order they are served
in, which is what makes a queue with several workers on it fair: two clients
blocked on the same key take the two elements a RPUSH q first second adds
in the order they arrived. A Vec is the right structure for that while the
list is short, and it is short, because a waiter is a client doing nothing.
Implementations§
Source§impl Waiters
impl Waiters
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
How many clients are parked, which is what INFO clients calls
blocked_clients.
Sourcepub fn mine(&self, thread: usize, into: &mut Vec<Parked>)
pub fn mine(&self, thread: usize, into: &mut Vec<Parked>)
Copy out the waiters thread has to answer, oldest first.
The caller works from the copy rather than from the list, because answering a waiter needs a connection’s reply buffer and the list is behind a lock that another thread is waiting on. It brings its own vector, which after the first parked client is a vector it already has the room in.