struct Shared {
queue: VecDeque<Task>,
num_notify: u32,
shutdown: bool,
shutdown_tx: Option<Sender>,
last_exiting_thread: Option<JoinHandle<()>>,
worker_threads: HashMap<usize, JoinHandle<()>>,
worker_thread_index: usize,
}
Fields§
§queue: VecDeque<Task>
§num_notify: u32
§shutdown: bool
§shutdown_tx: Option<Sender>
§last_exiting_thread: Option<JoinHandle<()>>
Prior to shutdown, we clean up JoinHandles
by having each timed-out
thread join on the previous timed-out thread. This is not strictly
necessary but helps avoid Valgrind false positives, see
https://github.com/tokio-rs/tokio/commit/646fbae76535e397ef79dbcaacb945d4c829f666
for more information.
worker_threads: HashMap<usize, JoinHandle<()>>
This holds the JoinHandles
for all running threads; on shutdown, the thread
calling shutdown handles joining on these.
worker_thread_index: usize
This is a counter used to iterate worker_threads
in a consistent order (for loom’s
benefit).
Auto Trait Implementations§
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more