Я пытаюсь ускорить загрузку своего приложения, и одна из идей, которые у меня были для этого, заключалась в использовании асинхронных очередей отправки. У меня есть две задачи, которые можно запускать рядом друг с другом при запуске (на самом деле довольно большие задачи). Тем не менее, обе они имеют значительную часть, которая работает в основном потоке (в основном код пользовательского интерфейса).Несколько GCD Dispatches в основной теме
dispatch_async(dispatch_get_main_queue, ^{
[self doTask1];
});
dispatch_async(dispatch_get_main_queue, ^{
[self doTask2];
//Will task 2 take turns with task 1, or will task 2 start after 1 is finished?
});
Мой вопрос заключается в следующем: если я называю 2 dispatch_async при начальной загрузке, как в этом примере, они будут по очереди выполнения, или полный первый блок выполнения первой, а затем 2-й блок?
Если это очередная очередь, то почему я могу назвать асинхронные отправки? –
Я не понимаю ваш вопрос, почему бы вам не удастся? async просто означает, что вы хотите вставить ячейку в блок, но не обязательно нужен результат прямо сейчас или хотите, чтобы он заблокировал текущую операцию, в которой вы ее выставили. он не требует, чтобы это происходило в другом потоке или начиналось немедленно. –
Кажется, существует распространенное заблуждение, что «асинхронные» и «параллельные» являются синонимами. Я не уверен, откуда она взялась, но я вижу, что это переполнение стека. –