0

Я использую последовательный очереди в НОД, какСоздание блока ожидания в последовательной очереди

dispatch_queue_t myCustomQueue; 
myCustomQueue = dispatch_queue_create("com.example.MyCustomQueue", NULL); 

dispatch_async(myCustomQueue, ^{ 
    .... 
/* some asyncronus call*/ 

}); 

в блоке я хочу сделать асинхронный вызов, как играть аудио,

Моя главная проблема в том, как только я делаю асинхронный вызов, блок не ждет и завершает выполнение всего блока.

Могу ли я сделать блок подождать некоторое время, пока некоторые обратного вызова из асинхронного вызова возвращает

+0

Вы получаете обратный вызов, когда асинхронный вызов завершен? В этом случае вы можете использовать обработчики завершения через GCD. –

+0

@PraveenS Если я не ошибаюсь, мой обработчик завершения будет выполняться в потоке, в котором воспроизводится звук. Но я хочу выполнить метод обратного вызова в том же потоке, что и последовательная очередь. Фактически вся последовательная очередь является частью групповая отправка – user1495306

ответ

0

Блокне может ждать, но нить кто exceuting это может.

Посмотрите в NSCondition, который позволяет wait и signal нитей

В основном вы выделить NSCondition и в блоке вы будете иметь [condition wait];, которая заставит поток ждать. , тогда, когда операция async завершена, вы вызываете [condition signal];, который будет сигнализировать о продолжении ожидающего потока.