我需要创建两个同步工作的后台进程队列。
我尝试使用此代码但没有得到它。我的错误在哪里?
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//block1
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
//block2
});
});
答案 0 :(得分:2)
如果我理解你的问题,你需要创建一个串行队列,如果你想让你的块同步运行:
dispatch_queue_t queue = dispatch_queue_create("queue-name", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
// first block
});
dispatch_async(queue, ^{
// second block
});
这两个块都将在一些未命名的后台线程上运行,但它们将同步运行。第一个块将在第二个块开始之前完成执行。
您可能不想使用后台优先级。此队列将由默认优先级全局队列支持,这几乎可以肯定是您想要的。
答案 1 :(得分:-1)
您可以在单线程中编写代码,同步将同步运行。
dispatch_queue_t queue = dispatch_queue_create("queue-name", DISPATCH_QUEUE_SERIAL);
dispatch_sync(queue, ^{
// first block
for (int i = 0; i < 100; i++)
{
NSLog(@"value = %d",i);
sleep(1);
}
NSLog(@"Hi...");
});