DispatchQueue 类

定义

提供可以同步或异步执行任务的任务队列。

public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
    inherit DispatchObject
继承
DispatchQueue
继承

注解

队列是在 Apple Grand Central Dispatch 框架中计划执行块的基本机制。

提交到调度队列的所有块都按 FIFO 顺序取消排队。 默认情况下,使用默认构造函数创建的队列会等待先前取消排队的块完成,然后再取消下一个块的排队。 此 FIFO 完成行为有时简单地描述为“串行队列”。 队列不绑定到任何特定的执行线程,提交到独立队列的块可以并发执行。 与所有调度对象一样,队列将进行引用计数,新创建的队列的引用计数为 1。

通过将 作为构造函数上的并发参数的值传递 true 来创建并发调度队列。 并发队列可以像调用全局并发队列一样同时调用块 (,但) 开销可能更高,并且支持通过调度屏障 API 提交的屏障块,例如实现高效的读取器-编写器方案。

可选的 label 参数用于描述队列的用途,在调试和性能分析期间非常有用。 按照约定,客户端应传递反向 DNS 样式标签。 如果提供了标签,则复制该标签。 如果未提供标签,则 Label 属性返回空的 C 字符串。 例如:

var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");

队列可能分别使用 函数 Suspend()Resume() 暂时暂停和恢复。 暂停是在阻止执行之前检查的,而不是先发制人的。

调度队列是 T:System.Threading.SynchronizationContext 感知队列,除非为线程设置了自定义同步上下文,否则它将安装自己的同步上下文,以确保任何上下文调度最终位于同一调度队列中。

调度屏障 API

调度屏障 API 是一种将屏障块提交到调度队列的机制,类似于 DispatchAsync(Action)/DispatchSync(Action) 方法。 它支持实现高效的读取器/编写器方案。 屏障块仅在提交到并发队列时行为特殊;在此类队列中,屏障块不会运行,直到先前提交到队列的所有块都已完成,在屏障块完成后提交到队列的任何块都不会运行。 提交到全局队列或非并发队列时,屏障块的行为与使用 DispatchAsync(Action)/DispatchSync(Action) 方法提交的块的行为相同。

构造函数

DispatchQueue(IntPtr)

将非托管 DispatchQueue 显示为托管对象。

DispatchQueue(String)

创建序列化所有已提交块的命名调度队列。

DispatchQueue(String, Boolean)

创建一个命名调度队列,该队列可以选择同时执行任何提交的代码。

DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue)

提供可以同步或异步执行任务的任务队列。

属性

Context

用户定义的上下文信息附加到 DispatchQueue。

CurrentQueue

开发人员不应使用此已弃用的属性。

CurrentQueueLabel

当前队列的标签。

DefaultGlobalQueue

返回默认全局队列,它是默认优先级的内置队列之一。

Handle

提供可以同步或异步执行任务的任务队列。

(继承自 DispatchObject)
Label

返回此 DispatchQueue 的标签。

MainQueue

返回主全局队列。

QualityOfService

提供可以同步或异步执行任务的任务队列。

方法

Activate()

提供可以同步或异步执行任务的任务队列。

(继承自 DispatchObject)
Check()
已过时.

提供可以同步或异步执行任务的任务队列。

(继承自 DispatchObject)
DispatchAfter(DispatchTime, Action)

在指定时间或之后执行此时间。

DispatchAfter(DispatchTime, DispatchBlock)

提供可以同步或异步执行任务的任务队列。

DispatchAsync(Action)

提供可以同步或异步执行任务的任务队列。

DispatchAsync(DispatchBlock)

提供可以同步或异步执行任务的任务队列。

DispatchBarrierAsync(Action)

提交屏障块以在调度队列上异步执行

DispatchBarrierAsync(DispatchBlock)

提供可以同步或异步执行任务的任务队列。

DispatchBarrierSync(Action)

提供可以同步或异步执行任务的任务队列。

DispatchBarrierSync(DispatchBlock)

提供可以同步或异步执行任务的任务队列。

DispatchSync(Action)

提供可以同步或异步执行任务的任务队列。

DispatchSync(DispatchBlock)

提供可以同步或异步执行任务的任务队列。

Dispose()

提供可以同步或异步执行任务的任务队列。

(继承自 DispatchObject)
Dispose(Boolean)

提供可以同步或异步执行任务的任务队列。

(继承自 DispatchObject)
Equals(Object)

提供可以同步或异步执行任务的任务队列。

GetGlobalQueue(DispatchQueuePriority)

根据请求的优先级返回一个全局调度队列。

GetHashCode()

提供可以同步或异步执行任务的任务队列。

GetQualityOfService(Int32)

提供可以同步或异步执行任务的任务队列。

GetSpecific(IntPtr)

提供可以同步或异步执行任务的任务队列。

InitializeHandle(IntPtr)

提供可以同步或异步执行任务的任务队列。

(继承自 NativeObject)
MainIteration()

提供可以同步或异步执行任务的任务队列。

Release()

提供可以同步或异步执行任务的任务队列。

(继承自 DispatchObject)
Resume()

继续执行队列。

Retain()

提供可以同步或异步执行任务的任务队列。

(继承自 DispatchObject)
SetSpecific(IntPtr, Object)

提供可以同步或异步执行任务的任务队列。

SetTargetQueue(DispatchQueue)

提供可以同步或异步执行任务的任务队列。

(继承自 DispatchObject)
Submit(Action<Int32>, Int64)

提供可以同步或异步执行任务的任务队列。

Suspend()

暂停队列的执行。

运算符

Equality(DispatchQueue, DispatchQueue)

提供可以同步或异步执行任务的任务队列。

Inequality(DispatchQueue, DispatchQueue)

提供可以同步或异步执行任务的任务队列。

适用于

另请参阅