2012-02-19 2 views
3

iOS에서는 현재 실행중인 GCD 대기열의 블록을 완료 할 때까지 기다려야하는 앱이 있습니다. 여기에서이 팁을 가지고Grand Central Dispatch : 블록 큐가 완료 될 때까지 어떻게 대기합니까?

dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{});

: 나는이 코드 줄은 단지 그렇게 할 것이라는 인상했다

http://www.fieryrobot.com/blog/2010/06/27/a-simple-job-queue-with-grand-central-dispatch/

내가 알고있는 것처럼,이 코드 줄 것 전역 대기열에서 실행되는 모든 작업이 완료 될 때까지 하위 시퀀스 실행을 차단합니다. 내 코드에서 이것은 일어나지 않는 것처럼 보입니다. 누군가가 이것을 할 접근법을 제안 할 수 있습니까?

감사합니다,

답변

5


더그 dispatch_sync()트릭는 해당 튜토리얼이 표시되어 무엇을하는, 일련 큐 작동합니다. dispatch_get_global_queue()가 동시 큐를 반환 it's documentation note를 참조하십시오

블록이 글로벌 동시 큐에 제출 서로에 대해 동시에 수행 할 수있다.

은 또한 자습서에 언급 당신이 당신의 블록을 제출 그룹을 사용해야 글로벌 동시 큐를 처리하고, dispatch_group_wait()으로 전체 그룹에 대한 기다립니다.

+0

빙고. 그것은 참으로 문제였습니다. 순차 FIFO 큐로 전환하는 것이 이제는 가능합니다. 고맙습니다. Grzegorz. – dugla

+1

이미 대기열에 있으면 교착 상태가 발생하므로 작동하지 않습니다. – OrangeDog

관련 문제