我需要创建队列的2后台进程,将同步工作。
我试着使用这段代码,但没有得到它。我的错误在哪里?
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//block1
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
//block2
});
});发布于 2014-06-09 16:38:19
如果我理解你的问题,如果你想让你的块同步运行,你需要创建一个串行队列:
dispatch_queue_t queue = dispatch_queue_create("queue-name", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
// first block
});
dispatch_async(queue, ^{
// second block
});这两个块都将在某个未命名的后台线程上运行,但它们将同步运行。第一个块将在第二个块开始之前完成执行。
您可能不想使用后台优先级。这个队列将在默认优先级全局队列的支持下运行,这几乎可以肯定是您想要的。
发布于 2014-06-09 16:58:43
您可以使用同步在单线程中编写代码,这些代码将一个接一个地同步运行。
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...");
});https://stackoverflow.com/questions/24116378
复制相似问题