Ios 新任务没有';不要等待GCD壁垒

Ios 新任务没有';不要等待GCD壁垒,ios,objective-c,grand-central-dispatch,Ios,Objective C,Grand Central Dispatch,我了解了一些关于GCD障碍的知识,并想检查这些信息(来自: 在屏障块完成之前,不会执行屏障块之后提交的任何块 根据该守则: 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) ==

我了解了一些关于GCD障碍的知识,并想检查这些信息(来自:

在屏障块完成之前,不会执行屏障块之后提交的任何块

根据该守则:

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!");
      }
    });
  }
}
dispatch\u queue\u t queue=dispatch\u get\u global\u queue(dispatch\u queue\u PRIORITY\u HIGH,0);
对于(int i=0;i<500,i++){
调度异步(队列^{
NSLog(“%d”,i);
}
如果((i%50)==0){
调度\u屏障\u异步(队列^{
对于(int j=0;j<5;j++){
[NSThread sleepForTimeInterval:1];
NSLog(@“Barrier!”);
}
});
}
}

我原以为每第50次计数,队列将停止5秒,但事实并非如此。相反,屏障与其他任务并行执行,所有任务尽管存在屏障,但都会立即执行。文档是否错误或我误解了某些内容?提前感谢

您似乎误读了文档中的下一段

您指定的队列应该是您创建的并发队列 您自己使用dispatch_queue_create函数。如果您 传递给此函数的是串行队列或全局队列之一 在并发队列中,此函数的行为类似于dispatch\u async 功能


将不会成为障碍,而是一个正常的异步调度。您似乎误读了文档中的下一段

您指定的队列应该是您创建的并发队列 您自己使用dispatch_queue_create函数。如果您 传递给此函数的是串行队列或全局队列之一 在并发队列中,此函数的行为类似于dispatch\u async 功能


将不会充当屏障,而是一个正常的异步调度

如果使用以下方法创建队列会发生什么情况:
queue=dispatch\u queue\u create(“SomeName”,dispatch\u queue\u CONCURRENT);
?如果使用以下方法创建队列会发生什么情况:
queue=dispatch\u queue\u create(“SomeName”,dispatch\u queue\u CONCURRENT);
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);