Я изучаю, как работает dispatch_async()
.dispatch_group_wait ждет навсегда
Я попробовал этот фрагмент в main()
:
typedef void(^VoidBlock)();
VoidBlock aBlock = ^{
NSLog(@"do work in main queue");
};
dispatch_async(dispatch_get_main_queue(), aBlock);
Но блок никогда не вызывается. Я подумал, что, возможно, главный поток заканчивается до того, как блок запустится. Тогда я попытался это:
dispatch_group_t aGroup = dispatch_group_create();
VoidBlock aBlock = ^{
NSLog(@"do work in main queue");
dispatch_group_leave(aGroup);
};
dispatch_group_enter(aGroup);
dispatch_async(dispatch_get_main_queue(), aBlock);
dispatch_group_wait(aGroup, DISPATCH_TIME_FOREVER);
Это не работает, либо (Блок не дозвонились). Разница в том, что в настоящее время основная нить (правильно) блокируется в отчете dispatch_group_wait(aGroup, DISPATCH_TIME_FOREVER)
В чем проблема?
Возможно, вы пробовали этот код в файле 'main.m'? –
Да, внутри 'main.m' и внутри' main' функция, конечно! – drakon
Что вы пробовали смотреть на выходе на консоли или даже с использованием контрольных точек? –