多线程——原子、非原子,自旋锁和互斥锁无标题文章

多线程——原子、非原子,自旋锁和互斥锁

nonatomic:非原子属性,线程不安全,但是效率高
atomic:原子属性,线程安全,但是效率低

原子属性是一种单线程写,多线程读(单写多读)的多线程技术,不过可能出现脏数据。

atomic属性内部的锁是 称作 自旋锁
凡是内部线程安全的对象,内部肯定会加锁

自旋锁与互斥锁的区别

.相同点:

   都能保证同一个时间只有一个线程访问共享资源,都能保证线程安全

.

.不同点:

互斥锁:如果数据已经有其他线程加锁了,线程会进入休眠等待锁,一旦访问的资源被解锁,则等待资源的线程被唤醒
自旋锁:如果数据已经有线程加锁了,线程会以死循环的方式等待锁,一旦被访问的资源被解锁,则等待资源的线程立即执行‘
自旋锁效率高,因为人家主动,主动的有饭吃

.

开发建议:
所有属性都声明为nonatomic
尽量避免多线程抢夺同一资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、多线程基础 基本概念 进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且...
    AlanGe阅读 3,619评论 0 0
  • 线程概述 有些程序是一条直线,起点到终点;有些程序是一个圆,不断循环,直到将它切断一个运行着的程序就是一个进程或者...
    褪而未变阅读 2,507评论 0 0
  • 前言 iOS开发中由于各种第三方库的高度封装,对锁的使用很少,刚好之前面试中被问到的关于并发编程锁的问题,都是一知...
    喵渣渣阅读 9,130评论 0 33
  • 一: 多线程的基本概念1.同步与异步的概念1.1 同步 必须等待当前语句执行完毕,才可以执行下一个语句。1.2...
    程序_猿阅读 8,881评论 1 16
  • 参考链接:http://smallbug-vip.iteye.com/blog/2275743 在多线程开发的过程...
    时之令阅读 5,468评论 2 5

友情链接更多精彩内容