iOS多线程系列之GCD栅栏(barrier)实现同步锁

  • 多线程编程中很容易出现资源竞争的问题,比如异步读写操作造成数据不同步。那么解决这一问题多线程编程中提供了一种同步机制叫同步锁。iOS中实现同步锁机制的方案不止一种,这里主要介绍一下强大的GCD给出的方案----栅栏(barrier) 下面直接上代码:

iOS多线程系列之GCD栅栏(barrier)实现同步锁

多运行几次看结果:
iOS多线程系列之GCD栅栏(barrier)实现同步锁

iOS多线程系列之GCD栅栏(barrier)实现同步锁

  • 可以看出来dispatch_barrier_async 能够在异步并发队列中对写入操作单个任务进行资源控制,也就是说确保了在写入任务操作3之前的并发任务确定完成,而在写入任务操作3之后的并发任务等待了写入操作3完成之后才进行执行(即使让写入操作3的线程sleep了1秒的情况下。更能清晰得出上述结论)。
  • 以上就是GCD之栅栏(barrier函数)实现同步锁方案。如有不正确的地方,欢迎小伙伴指点,共同进步。

相关推荐