首页 > 移动平台 > 详细

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

时间:2015-09-05 12:31:23      阅读:340      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!