디스패치 그룹의 멤버쉽은 실행 순서와 관계가 없습니다.
디스패치 그룹은 실제로 카운터 일 뿐이며 dispatch_group_enter(group)
은 카운터를 증가시키고 dispatch_group_leave(group)
은 카운터를 감소시킵니다.
가
dispatch_group_enter(group);
dispatch_async(queue, ^{
block();
dispatch_group_leave(group);
});
즉 dispatch_group_async(group, queue, block)
통해 전송 블록들의 실행 순서는 단지 지정된 queue
(들)에 따라 달라
dispatch_group_async(group, queue, block)
는 바로 가기이다.
디스패치 그룹 카운터에 도달하면 제로, dispatch_group_wait(group)
의 모든 웨이터가 깨어 있으며, dispatch_group_notify(group, queue, block)
를 통해 그룹에 제출 된 모든 블록이 모두 각각의 queue
들에 async'd된다 (그룹이 비어된다) (즉, 지정된 블록 queue
이 동시/독립적 인 경우이 블록이 동시에 실행될 수 있습니다.
출처
2013-05-20 16:09:04
das
아주 좋습니다. 고마워요! – LuisABOL