0
나는 GCD 장벽에 대해 조금 배우고 (Apple docs)에서이 정보를 검토하고 싶었 : 장벽 블록 이후에 제출새로운 작업
모든 블록 장벽 블록까지 실행되지 않습니다 완료됩니다. 이 코드에 의해
:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
for (int i = 0; i < 500, i++) {
dispatch_async(queue, ^{
NSLog("%d", i);
}
if ((i % 50) == 0) {
dispatch_barrier_async(queue, ^{
for (int j = 0; j < 5; j++) {
[NSThread sleepForTimeInterval:1];
NSLog(@"Barrier!");
}
});
}
}
내가 각각 50 카운트, 큐가 5 초 동안 정지되지만, 그렇지 않은 것을 예상하고 있었다. 대신 장벽은 다른 작업과 병행하여 실행되며 장벽에도 불구하고 모든 작업이 즉각 실행됩니다. 문서가 잘못되었거나 오인을 오해 한 적이 있습니까? 미리 감사
역할을하지 않습니다'큐 = dispatch_queue_create ("SomeName", DISPATCH_QUEUE_CONCURRENT을); ' ? – rmaddy