поведение dispatch_get_global_queue

Следующий код:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
    for (int i=0; i<100000; i++) {
        NSLog(@"HIGH 1 %d", i);
    }
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
    for (int i=0; i<100000; i++) {
        NSLog(@"LOW %d", i);
    }
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
    for (int i=0; i<100000; i++) {
        NSLog(@"HIGH 2 %d", i);
    }
});

приводит к смешиванию журналов высокого 1, высокого 2 и низкого уровня.

Как получается, что он печатает журналы высокого 1 и высокого 2 одновременно. не одновременно высокий 1 и высокий 2 блоги в одной очереди? Так не следует ли завершать блок high1 перед началом выполнения блока high2?

28
задан Ashish Awaghad 12 September 2011 в 11:15
поделиться