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

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

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

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

IOS开发建议

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

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

// // ViewController.m // 07-原子性和非原子性 // // Created by gzxzmac on 16/1/28. // Copyright © 2016年 ...
  • CG_Lueng
  • CG_Lueng
  • 2016年03月24日 14:23
  • 1457

ios atomic nonatomic区别

atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。         atomic                 设置成员变量的@pro...
  • lipeiran1987
  • lipeiran1987
  • 2014年06月17日 15:20
  • 4952

并发编程—OSAtomic原子操作

并发编程一个主要问题就是如何同步数据。同步数据的方式有很多种,这里我们介绍一下libkern/OSAtomic.h。这个头文件包含是大量关于原子操作和同步操作的函数,如果要对数据进行同步操作,这里面的...
  • pjk1129
  • pjk1129
  • 2015年03月31日 15:06
  • 5994

原子操作的实现原理

学习并发时,看到的一篇文章,收藏一下,转自InforQ,版权归原作者所有,勿用于商业。 1. 引言 原子(atom)本意是“不能被进一步...
  • b335e6dc
  • b335e6dc
  • 2016年03月29日 11:57
  • 979

原子操作,自旋锁

原子操作指的是在执行过程中不会被别的代码路径所中断的操作。 linux内核提供了一系列函数来实现内核中的原子操作,这些函数又分为两类,分别针对位和整型变量进行原子操作。它们的共同点是在任何情况下操作都...
  • typhoonzb
  • typhoonzb
  • 2009年09月06日 15:23
  • 1246

C++11多线程之mutex等锁机制和atomic原子操作对比

一.简介这里以mutex锁机制为例. mutex函数:是一套专门用于线程同步锁机制的函数. #include using namespace std;atomic原子操作:是在新标准...
  • hspingcc
  • hspingcc
  • 2017年01月19日 16:36
  • 4207

线程同步方法:互斥量,信号量,原子锁

///VC, 线程同步方法:互斥量,信号量#define StartThread(thrFun) CloseHandle(CreateThread(NULL,0,thrFun,NULL,0,NULL)...
  • wabil
  • wabil
  • 2016年06月06日 09:42
  • 951

iOS 开发中的八种锁(Lock)

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

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

nonatomic:非原子属性,线程不安全的,效率高atomic:原子属性,线程安全的,效率相对低。 原子属性是一种单(线程)写多(线程)读的多线程技术,不过可能会出现脏数据 atomic属性...
  • leikezhu1981
  • leikezhu1981
  • 2016年06月05日 01:29
  • 953

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

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】     原子锁是多线程编程中的一个特色。然而,在平时的软件编写中,原子锁的使用并不是很多...
  • feixiaoxing
  • feixiaoxing
  • 2011年11月28日 21:19
  • 23695
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多线程——原子、非原子,自旋锁和互斥锁
举报原因:
原因补充:

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