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

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

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

相遇就是缘分,iOS学习交流群:642363427,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

还有更多福利:

  • 点击加入iOS开发技术学习交流群

  • BAT大厂面试题、独家面试工具包,

  • 资料免费领取,包括阿里面试题 ,iso高级面试题,大厂面试题,BAT面试题。

iOS多线程系列之GCD栅栏(barrier)实现同步锁_第3张图片

你可能感兴趣的:(多线程,ios)