GCD解决方案的比赛条件

在上图中,您可以看到:

  1. 附录🌎已分配给线程2。
  2. 修改 ⚽已分配给线程5。
  3. 由于我是有意添加usleep(3)的,因此您可以看到Modify⚽得到了一个Error: Index out of range

两个线程访问相同的资源均导致此竞态条件 。 有几种方法可以解决此问题。

同步

同步的作用是确保完成指定的任务,这意味着告诉队列中的下一个任务等待。

屏障

当屏障执行时,它就像一个串行队列。 仅执行指定的任务。 屏障完成后,队列返回到正常的并发队列。