线程同步:

1,原子操作
2,内存屏蔽和volatile变量
只确保每次操作都是从内存中获取信息,而不用寄存器内保存的数据
OSMemoryBarrier函数,设置内存屏蔽
volatile变量
线程安全设计技巧:
===代码一---有风险的代码

NSLock* arrayLock = [self GetArrayLock];

NSMutableArray* myArray = GetSharedArray();

id anObject;

[arrayLock lock];

anObject = [myArray objectAtIndex:0];

[arrayLock unlock];

// 在处理doSomething的时候共享资源myArray可能被修改,下面的操作就是有风险的操作

[anObject doSomething];

===代码二---低效率的代码
NSLock* arrayLock = [self GetArrayLock];

NSMutableArray* myArray = GetSharedArray();

id anObject;

[arrayLock lock];

anObject = [myArray objectAtIndex:0];

// 在处理doSomething放到Lock里面,如果doSomething处理时间比较长,那么就形成了效率瓶颈,影响程序效率

[anObject doSomething];

[arrayLock unlock];

===代码三---高效率的代码

NSLock* arrayLock = [self GetArrayLock];

NSMutableArray* myArray = GetSharedArray();

id anObject;

[arrayLock lock];

anObject = [myArray objectAtIndex:0];

// 把对象retain and save,防止在unlock,myArray里面的内容被修改

[anObject retain];

[arrayLock unlock];

[anObject doSomething];

[anObject release];

转载于:https://www.cnblogs.com/jinjiantong/archive/2013/03/25/2980258.html

[ios]NSLock锁相关推荐

  1. iOS线程锁中你还不知道的内容

    iOS线程锁 一:十种线程锁 我们在使用多线程的时候多个线程可能会访问同一块资源,这样就很容易引发数据错乱和数据安全等问题,这时候就需要我们保证每次只有一个线程访问这一块资源,锁 应运而生. 这里顺便 ...

  2. bugku 管理员系统 后台代码_不会吧,这也行?iOS后台锁屏监听摇一摇

    [toc] 背景介绍 一般情况下,出于省电.权限.合理性等因素考虑,给人的感觉是很多奇怪的需求安卓可以实现,但是iOS就无法实现!今天要介绍的需求也有这种感觉,就是"当 APP 处于后台或锁 ...

  3. ios 各种锁的使用性能比较

    iOS开发中常用的锁有如下几种 来比较一下遇到加锁的情况: 1. @synchronized 关键字加锁 2. NSLock 对象锁  3. NSCondition   4. NSConditionL ...

  4. iOS 音乐 锁屏显示 控制

    1 APPDelegate.m 文件中 设置接收外部控制 - (BOOL)application:(UIApplication *)application didFinishLaunchingWith ...

  5. ios图锁HQ应用项目源码

    "图锁 HQ" 是一个专门为图片定制的超级保险箱! - 保证图片100%安全! - 使用无损压缩算法压缩图片, 节约空间资源. - 使用超高安全级别的加密算法加密图片. - 每次进 ...

  6. ios激活锁_如何检查iOS设备的激活锁状态

    ios激活锁 Starting with iOS 7, Apple introduced a feature named Activation Lock for iOS devices. When y ...

  7. [ios开发]锁屏后的相机的方向检查,与图片的自动旋转

    关键词:imageOrientation, 自动旋转, 获取方向, 锁屏, 图片方向, 自定义拍照 问题描述: 一个同事开发iphone拍照后为图片添加滤镜的功能. 发现添加滤镜时总出现方向自动变化的 ...

  8. IOS版aplayer使用教程_使用Checkra1n 越狱后成果绕过 iOS 激活锁教程

    本教程适用于macos 此方法绕过iCloud不能正常登陆账号和登陆AppStore 如果遗忘 iOS 设备的 Apple ID 密码,在重新激活时可以按照以下步骤绕过 Apple ID,实现免激活直 ...

  9. iOS 自动锁屏 设置

    // 自动锁屏 [UIApplication sharedApplication].idleTimerDisabled = NO; // 不自动锁屏 [UIApplication sharedAppl ...

最新文章

  1. 皮一皮:大家对自己的定位都挺准的...
  2. Android Studio开发概要记录
  3. 记录一次壮烈牺牲的阿里巴巴面试
  4. 在大城市打拼的你,是想留下还是想攒够了钱回家?
  5. 镭威视监控怎么复位_三大原因导致海康威视、大华股份近期连续暴跌
  6. 茴香豆的n种写法之②——Sql据多个条件 查询每个条件的前N条记录
  7. 写日历的程序员,你必须弄懂的中国农历算法。
  8. C# set和get如何用
  9. Guava cache
  10. python建立考试系统_python搭建自动化测试环境
  11. pythonmapiter_018.Python迭代器以及map和reduce函数
  12. 删除字符串前面的0,00,000。。。
  13. linux各个版本下载地址,利用镜像服务器下载
  14. 史上最全linux内核配置详解
  15. PostgreSql 批量修改数据库下所有表 owner
  16. 机器学习专有名词归纳
  17. webpack整合bable
  18. Qt编写数据可视化大屏界面电子看板10-改造QCustomPlot
  19. IIC通信协议(STM32学习笔记 一)
  20. 用python画肖战_从python爬虫以及数据可视化的角度来为大家呈现“227事件”后,肖战粉丝的数据图...

热门文章

  1. python多久能上手_小白学习Python,怎样能够快速入门上手
  2. 20、计算机图形学——微平面理论和Cook-Torrance BRDF
  3. 策略模式(封装一系列的功能,使之可以相互替换)
  4. 矩阵相乘原理与C实现(实矩阵)
  5. debian nvidia 安装_【折腾】openSUSE安装与配置——从入门到放弃
  6. python operator 多属性排序_又碰到一个非常实用的模块,以后的各种运算就用它了,python内置的常用包。
  7. Investigating SQL Server 2008 Wait Events with XEVENTS
  8. NSGA-II入门C1
  9. Go学习之-用vscode写go代码遇到的问题
  10. 理解LSTM/RNN中的Attention机制