iOS关于锁的个人见解
来源:互联网 发布:硬笔书法字帖推荐 知乎 编辑:程序博客网 时间:2024/06/04 19:43
2017-5-16 周三 晴 作者:58婚恋技术部
iOS中thread有
1,NSObject的performSelector…
2,NSThread
3,Operation
4,GCD
5,pthread
其中,第2,4,5三种才算是真正的线程,因为第一个是一个selector,只是一个方法的实现而已,只是一个消息接受方法而已,不是线程
第三个,operation是一个线程的任务,一个线程能有很多任务,线程一般不能人为的去结束他,而operation任务确实可以人为去结束的
一,互斥锁
OC
下互斥锁的实现是通过@synchronized实现的,代码中创建一个互斥锁非常方便的方法,它防止不同的线程在同一时间获取同一个锁,然而,如果你传递的是同一个对象,那么多个线程中的一个线程会首先获得该锁,而其他线程将会被阻塞直到第一个线程完成它的临界区(多个线程都会访问的公用的区域,比如多个线程都要访问磁盘,这个磁盘就是临界区)
二,
NSLock
使用方法,当多个线程使用同一个锁,那么第一个锁住的对象有权访问资源,其他线程就会被阻塞成一个请求队列,直到第一个lock住资源的线程unlock资源,第二个线程去请求资源,同样会上锁,防止其他线程访问资源。
NSLock
的创建,自定义一个继承自NSLock的锁,
[lock lock];
//do some thing complete your task.
[lock unlock];
三,信号量锁,见GCD部分
四,递归锁
类定义的锁可以在同一线程多次获得,而不会造成死锁。一个递归锁会跟踪它被多少次成功获得了。每次成功的获得该锁都必须平衡调用锁住和解锁的操作。只有所有的锁住和解锁操作都平衡的时候,锁才真正被释放给其他线程获得
NSRecursiveLock *theLock = [[NSRecursiveLock alloc] init];
[theLock lock];
// do some thing .
[theLock unlock];
阅读全文
0 0
- iOS关于锁的个人见解
- 关于ROS的个人见解
- 关于指针的个人见解
- 关于AIDL的个人见解
- 个人关于BaseServlet的见解
- 关于rem的个人见解
- 关于队列的个人见解
- 关于生产者与消费者的同步锁的个人见解
- 关于项目管理的一些个人见解
- 关于 ARM 和 单片机的个人见解
- 关于UI的自己个人见解
- 关于驱动的一点个人见解
- 关于浮动的一些个人见解
- 关于数据仓库几个术语的个人见解
- 关于自学的个人见解1
- 关于benchmarksql的一些个人见解
- 关于阿法狗的一点个人小见解
- 关于MYSQL优化的一些个人见解
- 一个简单的星星评分
- 机器学习---支持向量机(1)
- 模型转换工具 Mantle, MJExtension, JSONModel 的使用和异同及防崩溃能力比较
- Linux编程中中各种头文件
- CentOS安装图形桌面环境
- iOS关于锁的个人见解
- 爆裂鼓手
- 三种创建线程的方式
- 真Unity3d_我们如何做技术选型
- struts2 工作原理和执行流程
- java面试中可能常问的几个技术问题及答案
- SpringBoot相关的知识点总结
- iOS RunLoop 的个人理解
- prompt 消息对话框