저는 앱 부팅 속도를 높이려고합니다. 그 중 하나는 비동기 디스패치 대기열을 사용하는 것이 었습니다. 나는 시작할 때 서로 옆에 두 개의 작업을 실행할 수있다. 그러나 둘 다 주요 스레드 (주로 UI 코드)에서 실행되는 중요한 부분을 가지고 있습니다. 메인 스레드에서 다중 GCD 디스패치
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는 단지 블록을 대기열에 넣고 싶지만 지금 당장 결과를 필요로하지 않거나 대기열에 추가 한 현재 작업을 차단하려고한다는 것을 의미합니다. 다른 스레드에서 발생하거나 즉시 시작될 필요가 없습니다. –
"비동기"와 "동시"가 동의어라는 일반적인 오해가있는 것 같습니다. 나는 그것이 어디서 왔는지는 모르겠지만, 스택 오버 플로우 (overflow) 전체에서 그것을 볼 수있다. –