ios - 2个后台进程队列

标签 ios multithreading queue grand-central-dispatch

我需要创建两个同步工作的后台进程的队列。

我尝试使用此代码但没有得到它。我的错误在哪里?

dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  //block1
  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    //block2
  });
});

最佳答案

如果我理解你的问题,如果你希望你的 block 同步运行,你需要创建一个串行队列:

dispatch_queue_t queue = dispatch_queue_create("queue-name", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
  // first block
});
dispatch_async(queue, ^{
  // second block
});

这两个 block 都将在一些未命名的后台线程上运行,但它们将同步运行。第一个 block 将在第二个 block 开始之前完成执行。

您可能不想使用后台优先级。该队列将在默认优先级全局队列的支持下运行,这几乎肯定是您想要的。

关于ios - 2个后台进程队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24116378/

相关文章:

multithreading - Delphi:PostThreadMessage和PeekMessage不起作用

ios - GTMNSString+HTML 在结构体中使用对象

ios - 纹理不在 mainBundle 中的 GLKTextureLoader

c++ - 为什么并行执行 Tcl_ExprDouble 的独立 Tcl 解释器需要互斥体?

c# - .NET 队列 ElementAt 性能

C++11 线程安全队列

bash - 如何设置 ffmpeg 队列?

ios - AVAudioPlayer 不播放音频 Swift

ios - MPMediaQuery 和 iTunes 匹配问题

c - OpenMP - 在并行 for 循环中调用外部函数