iOS 线程管理的学习记录
2014-05-21 13:15
218 查看
本文转载至 http://www.2cto.com/kf/201312/265451.html
今天发现了非常好的线程管理的文章,特此贴出来学习一下,最后还有一块并没有试验,再次也贴出来,大家可以参考一下
NSDistributedLock分布式锁
以上所有的锁都是在解决多线程之间的冲突,但如果遇上多个进程或多个程序之间需要构建互斥的情景该怎么办呢?这个时候我们就需要使用到NSDistributedLock了,从它的类名就知道这是一个分布式的Lock,NSDistributedLock的实现是通过文件系统的,所以使用它才可以有效的实现不同进程之间的互斥,但NSDistributedLock并非继承于NSLock,它没有lock方法,它只实现了tryLock,unlock,breakLock,所以如果需要lock的话,你就必须自己实现一个tryLock的轮询,下面通过代码简单的演示一下吧
?
?
先运行程序A,然后立即运行程序B,根据打印你可以清楚的发现,当程序A刚运行的时候,程序B一直处于等待中,当大概10秒过后,程序B便打印出了appB:OK的输出,以上便实现了两上不同程序之间的互斥。/Users/mac/Desktop/earning__是一个文件或文件夹的地址,如果该文件或文件夹不存在,那么在tryLock返回YES时,会自动创建该文件/文件夹。在结束的时候该文件/文件夹会被清除,所以在选择的该路径的时候,应该选择一个不存在的路径,以防止误删了文件。
个人觉得除了这些以外,之前还在工作当中用到过一个关于NSTimer的线程管理,那就是timer的暂停和继续,在此也贴出代码
?
NSDistributedLock分布式锁
以上所有的锁都是在解决多线程之间的冲突,但如果遇上多个进程或多个程序之间需要构建互斥的情景该怎么办呢?这个时候我们就需要使用到NSDistributedLock了,从它的类名就知道这是一个分布式的Lock,NSDistributedLock的实现是通过文件系统的,所以使用它才可以有效的实现不同进程之间的互斥,但NSDistributedLock并非继承于NSLock,它没有lock方法,它只实现了tryLock,unlock,breakLock,所以如果需要lock的话,你就必须自己实现一个tryLock的轮询,下面通过代码简单的演示一下吧
?
个人觉得除了这些以外,之前还在工作当中用到过一个关于NSTimer的线程管理,那就是timer的暂停和继续,在此也贴出代码
?
相关文章推荐
- 从头开始学习linux下mysql管理(学习记录)
- 【Linux学习记录】Linux磁盘与文件系统管理
- iOS多线程编程指南(二)线程管理
- ios学习记录-UITableView
- iOS多线程编程指南(二)线程管理
- 学习笔记之四_Cisco系统IOS和安全设备管理系统SDM(CCNA知识考点)
- 《UNIX环境高级编程》学习记录之第11章-线程--pthead_create()
- 我记录综合系统学习研究之用户管理三(wojilu.Web.Controller.Layouts SiteLayoutController)
- 我记录综合系统学习研究之用户管理二(wojilu.Web.Controller.Users MainController)
- iOS多线程编程指南(二)线程管理
- 【Linux学习记录】Linux文件属性权限、目录管理
- 项目管理概述学习记录(一)
- 项目管理概述学习记录(一)
- 我记录综合系统学习研究之用户管理四(用户空间)
- ios 学习记录 页面跳转
- 【Linux学习记录】Linux文件属性权限、目录管理
- IOS学习十三:代码管理中Versions使用
- 项目管理概述学习记录(二)
- 清明节期间学习记录,无愧对先人啊~~~LINUX ANSI C动态内存管理示范代码
- iOS学习笔记(1)— UIView 渲染和内容管理