GCD DispatchWorkItem任务单元
GCD DispatchWorkItem任务单元

GCD DispatchWorkItem任务单元

DispatchWorkItem 是 GCD(Grand Central Dispatch)的一个封装,表示一个可执行的任务单元。

DispatchWorkItem可以在队列中异步执行,支持取消(cancel())或检查是否已被取消,附加完成回调(notify(queue:))。

基本用法

1、创建任务

let workItem = DispatchWorkItem {
    print("开始执行任务")
}

DispatchQueue.global().async(execute: workItem)

创建一个异步任务workItem,放到全局队列执行。

2、取消任务

DispatchWorkItem 可以使用 cancel() 方法,调用后会发出请求取消信息。

workItem.cancel()

任务内部需要检查isCancelled,来决定是否提前退出。

let workItem = DispatchWorkItem {
    for i in 0..<1000 {
        if workItem.isCancelled { return }  // 如果被取消,就退出
        print(i)
    }
}

如果没有isCancelled,cancel方法不会终止任务。

总结

DispatchWorkItem和Swift并发任务非常类似,在Swift 5.5+ 版本中,推荐使用DispatchWorkItem替代DispatchWorkItem。

Swift并发可以使用task.cancel()取消任务,也需要在任务内部检查task. isCancelled属性。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注