objective-c - 检查排队的 GCD block ?

标签 objective-c grand-central-dispatch

假设我有一个串行调度队列,我在其上排队了几个操作。我读到一旦 dispatch 就无法取消操作。是否有可能至少查看我已 dispatch 到哪些 GCD block ,以便决定是否要 dispatch 另一个 block ?

例如,我将操作 A 分派(dispatch)到队列中,但在我的应用程序决定将另一个操作 A 加入队列后不久,因此现在有 2 个这样的操作在排队。

最佳答案

正如 Kevin Ballard 所说,您需要详细说明您到底想做什么。您可以做的一件事是设置一个标志,例如 valid_ 然后您可以通过执行以下操作有效地取消队列中除当前项目之外的所有项目:

dispatch_async(queue, ^{
  if (valid_) {
    // perform your task here
  }
});

然后,每当您想“取消”队列时,只需将您的 valid_ 标志设置为 NO

不过,请再次提供有关您尝试执行的操作的更多信息,我可以为您提供更好的答案。

关于objective-c - 检查排队的 GCD block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10503776/

相关文章:

ios - 是否有等效于 gethostbyname 和 inet_ntoa 函数的任何 iOS SDK?

swift - 弱引用在分派(dispatch)到串行队列后变为 nil

ios - 如何使用 Swift 3 DispatchQueue 高效调度数千个异步事件

ios - 没有 Storyboard的过渡动画 swift

iOS 8.3 Storyboard侧边菜单

iphone - 无法显示异步加载的纹理

iphone - dispatch_get_global_queue 行为

iphone - iPhone 的加速度计有多精确——是否可以绘制出相对准确的手机位置运动路径?

ios - AVAssetWriterInput 追加样本缓冲区 : Cannot append sample buffer: Must start a session (using -AVAssetWriter startSessionAtSourceTime:) first'

ios - 使用 GCD 运行重复 NSTimer?