码迷,mamicode.com
首页 > 移动开发 > 详细

iOS GCD 必须推荐,有关于单例使用问题

时间:2015-09-05 12:32:12      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

链接如下:

以前只注意使用dispatch_once达到创建单例对象时的线程安全,读了下边这篇文章,才突然发现以前的做法漏洞百出:仅仅保证创建时的线程安全是完全不够的,要保证单例变量读取时的线程安全!

http://www.cocoachina.com/swift/20150129/11057.html

 我感兴趣的部分就是其中关于多线程时的单例成员变量访问部分,swfit语言写的,这里的concurrentPhotoQueue是一个自己建立的并发queue。

func addPhoto(photo: Photo) {
  dispatch_barrier_async(concurrentPhotoQueue) { // 1
    self._photos.append(photo) // 2
    dispatch_async(GlobalMainQueue) { // 3
      self.postContentAddedNotification()
    }
  }
}
var photos: [Photo] {
  var photosCopy: [Photo]!
  dispatch_sync(concurrentPhotoQueue) { // 1
    photosCopy = self._photos // 2
  }
  return photosCopy
}

注意第一个函数中的dispatch_barrier_async是重点!

iOS GCD 必须推荐,有关于单例使用问题

标签:

原文地址:http://www.cnblogs.com/breezemist/p/4783019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!