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

原创 2015年11月20日 22:21:05
  • nonatomic:非原子属性,线程不安全的,效率高
  • atomic:原子属性,线程安全的,效率相对低。
  • 原子属性是一种单(线程)写多(线程)读的多线程技术,不过可能会出现脏数据

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

  • 自旋锁和互斥锁
    • 相同点:都能保证同一时间只有一个线程访问共享资源。都能保证线程安全。
    • 不同点:
      • 互斥锁:如果共享数据已经有其他线程加锁了,线程会进入休眠状态等待锁。一旦被访问的资源被解锁,则等待资源的线程会被唤醒。
      • 自旋锁:如果共享数据已经有其他线程加锁了,线程会以死循环的方式等待锁,一旦被访问的资源被解锁,则等待资源的线程会立即执行。
    • 自旋锁的效率高于互斥锁。

IOS开发建议

  • 所有属性都声明为nonatomic
  • 尽量避免多线程抢夺同一块资源
  • 尽量将加锁、资源抢夺的业务逻辑交给服务器端处理,减少移动客户端的压力
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

多线程:原子性与非原子性

// // ViewController.m // 07-原子性和非原子性 // // Created by gzxzmac on 16/1/28. // Copyright © 2016年 ...

IOS atomic与nonatomic,assign,copy与retain的定义和区别

atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。         atomic               ...

自旋锁和互斥锁区别

http://blog.csdn.net/kyokowl/article/details/6294341 POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常...

iOS 开发中的八种锁(Lock)

锁之前的性能的图表: lock_benchmark.png 发现除了@synchronized 用过,其他的都陌生的很,可以说完全不知道啥玩意儿~ 于是怀着惭愧的心情赶紧把这...

多线程的那点儿事(之原子锁)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】     原子锁是多线程编程中的一个特色。然而,在平时的软件编写中,原子锁的使用并不是很多...

ios atomic nonatomic区别

atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。         atomic              ...

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

nonatomic:非原子属性,线程不安全的,效率高atomic:原子属性,线程安全的,效率相对低。 原子属性是一种单(线程)写多(线程)读的多线程技术,不过可能会出现脏数据 atomic属性...

原子、信号量、互斥锁、自旋锁

一、原子操作 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微...

LInux 的并发和竟态——中断、原子操作、自旋锁

并发是指的是多个执行单元同时被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问很容易导致竟态。主要有以下三个方面: 一、对称处理器的多个CPU。 二、单CPU内,进...

6-定时器_锁_互斥体_自旋锁_原子操作

内核定时器编程:时钟脉冲:它是soc的重要指标和性能参数。供内核使用(进程调度,计时)。也称为时钟中断,通常是操作系统的0号中断。jiffies: 内核中表示自系统开机以来,一共发生了多少次时钟脉冲。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)