Очередь 2 фоновых процессов
Мне нужно создать очередь из 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
});
});
2 ответа
Если я понимаю ваш вопрос, вам нужно создать последовательную очередь, если вы хотите, чтобы ваши блоки работали синхронно:
dispatch_queue_t queue = dispatch_queue_create("queue-name", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
// first block
});
dispatch_async(queue, ^{
// second block
});
Оба эти блока будут работать в каком-то неназванном фоновом потоке, но они будут работать синхронно. Первый блок завершится до того, как начнется второй.
Вы, вероятно, не хотите использовать приоритет фона. Эта очередь будет работать при поддержке глобальной очереди по умолчанию, которая почти наверняка вам нужна.
Вы можете написать код в одном потоке с синхронизацией, который будет работать синхронно один за другим.
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...");
});