pub trait TaskQueue {
type E;
// Required methods
fn push(&mut self, task: Self::E) -> bool;
fn pop_local(&self, threshold: usize) -> Option<Self::E>;
fn pop_global(&self) -> PopResult<Self::E>;
fn size(&self) -> usize;
fn invalidate_last_queue_id(&mut self);
fn last_stolen_queue_id(&self) -> usize;
fn set_last_stolen_queue_id(&mut self, id: usize);
fn next_random_queue_id(&mut self) -> i32;
fn is_empty(&self) -> bool;
}