pub struct Queue { /* private fields */ }
Expand description
A Grand Central Dispatch queue.
For more information, see Apple’s Grand Central Dispatch reference.
Implementations§
source§impl Queue
impl Queue
sourcepub fn main() -> Self
pub fn main() -> Self
Returns the serial dispatch Queue
associated with the application’s
main thread.
sourcepub fn global(priority: QueuePriority) -> Self
pub fn global(priority: QueuePriority) -> Self
Returns a system-defined global concurrent Queue
with the specified
priority.
sourcepub fn create(label: &str, attr: QueueAttribute) -> Self
pub fn create(label: &str, attr: QueueAttribute) -> Self
Creates a new dispatch Queue
.
sourcepub fn with_target_queue(
label: &str,
attr: QueueAttribute,
target: &Queue
) -> Self
pub fn with_target_queue( label: &str, attr: QueueAttribute, target: &Queue ) -> Self
Creates a new dispatch Queue
with the given target queue.
A dispatch queue’s priority is inherited from its target queue. Additionally, if both the queue and its target are serial queues, their blocks will not be invoked concurrently.
sourcepub fn exec_sync<T, F>(&self, work: F) -> Twhere
F: Send + FnOnce() -> T,
T: Send,
pub fn exec_sync<T, F>(&self, work: F) -> Twhere F: Send + FnOnce() -> T, T: Send,
Submits a closure for execution on self and waits until it completes.
sourcepub fn exec_async<F>(&self, work: F)where
F: 'static + Send + FnOnce(),
pub fn exec_async<F>(&self, work: F)where F: 'static + Send + FnOnce(),
Submits a closure for asynchronous execution on self and returns immediately.
sourcepub fn exec_after<F>(&self, delay: Duration, work: F)where
F: 'static + Send + FnOnce(),
pub fn exec_after<F>(&self, delay: Duration, work: F)where F: 'static + Send + FnOnce(),
After the specified delay, submits a closure for asynchronous execution on self.
sourcepub fn apply<F>(&self, iterations: usize, work: F)where
F: Sync + Fn(usize),
pub fn apply<F>(&self, iterations: usize, work: F)where F: Sync + Fn(usize),
Submits a closure to be executed on self the given number of iterations and waits until it completes.
sourcepub fn for_each<T, F>(&self, slice: &mut [T], work: F)where
F: Sync + Fn(&mut T),
T: Send,
pub fn for_each<T, F>(&self, slice: &mut [T], work: F)where F: Sync + Fn(&mut T), T: Send,
Submits a closure to be executed on self for each element of the provided slice and waits until it completes.
sourcepub fn map<T, U, F>(&self, vec: Vec<T>, work: F) -> Vec<U>where
F: Sync + Fn(T) -> U,
T: Send,
U: Send,
pub fn map<T, U, F>(&self, vec: Vec<T>, work: F) -> Vec<U>where F: Sync + Fn(T) -> U, T: Send, U: Send,
Submits a closure to be executed on self for each element of the
provided vector and returns a Vec
of the mapped elements.
sourcepub fn barrier_sync<T, F>(&self, work: F) -> Twhere
F: Send + FnOnce() -> T,
T: Send,
pub fn barrier_sync<T, F>(&self, work: F) -> Twhere F: Send + FnOnce() -> T, T: Send,
Submits a closure to be executed on self as a barrier and waits until it completes.
Barriers create synchronization points within a concurrent queue. If self is concurrent, when it encounters a barrier it delays execution of the closure (and any further ones) until all closures submitted before the barrier finish executing. At that point, the barrier closure executes by itself. Upon completion, self resumes its normal execution behavior.
If self is a serial queue or one of the global concurrent queues,
this method behaves like the normal sync
method.
sourcepub fn barrier_async<F>(&self, work: F)where
F: 'static + Send + FnOnce(),
pub fn barrier_async<F>(&self, work: F)where F: 'static + Send + FnOnce(),
Submits a closure to be executed on self as a barrier and returns immediately.
Barriers create synchronization points within a concurrent queue. If self is concurrent, when it encounters a barrier it delays execution of the closure (and any further ones) until all closures submitted before the barrier finish executing. At that point, the barrier closure executes by itself. Upon completion, self resumes its normal execution behavior.
If self is a serial queue or one of the global concurrent queues,
this method behaves like the normal async
method.
sourcepub fn suspend(&self) -> SuspendGuard
pub fn suspend(&self) -> SuspendGuard
Suspends the invocation of blocks on self and returns a SuspendGuard
that can be dropped to resume.
The suspension occurs after completion of any blocks running at the
time of the call.
Invocation does not resume until all SuspendGuard
s have been dropped.