线程开发中常遇到"PO"级别的"Bug"
2015-09-01 21:55
204 查看
// 创建线程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// 启动线程
[thread start];
线程池:存放线程的池子! 分为:
可调度线程池: CPU 只会调度可调度线程池中的线程! 下面蓝色状态都位于可调度线程池中! '就绪' ,'运行'!
不可调度线程池: 下面红色状态都位于不可调度线程池中! "新建" ,"阻塞" ,"死亡"!
线程状态:
start CPU调度当前线程 运行结束/强制退出(exit)
"新建" ---------->'就绪' -----------------> '运行' -----------------------> "死亡";
CPU 调度其他线程 CPU调度当前线程
'运行' ------------------> '就绪'-----------------> '运行'
调用 sleep/等待互斥锁 sleep时间到/得到互斥锁
'运行' -----------------------> "阻塞"-----------------------> '就绪';
线程运行结束或者强制退出(exit)就进入 "死亡" 状态;
"注意:一旦线程停止(死亡),就不可以再次开启任务!程序会挂掉: Crash!
平时开发中,要特别关注 Crash! :"PO"级别的 "Bug";
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// 启动线程
[thread start];
线程池:存放线程的池子! 分为:
可调度线程池: CPU 只会调度可调度线程池中的线程! 下面蓝色状态都位于可调度线程池中! '就绪' ,'运行'!
不可调度线程池: 下面红色状态都位于不可调度线程池中! "新建" ,"阻塞" ,"死亡"!
线程状态:
start CPU调度当前线程 运行结束/强制退出(exit)
"新建" ---------->'就绪' -----------------> '运行' -----------------------> "死亡";
CPU 调度其他线程 CPU调度当前线程
'运行' ------------------> '就绪'-----------------> '运行'
调用 sleep/等待互斥锁 sleep时间到/得到互斥锁
'运行' -----------------------> "阻塞"-----------------------> '就绪';
线程运行结束或者强制退出(exit)就进入 "死亡" 状态;
"注意:一旦线程停止(死亡),就不可以再次开启任务!程序会挂掉: Crash!
平时开发中,要特别关注 Crash! :"PO"级别的 "Bug";
相关文章推荐
- POJ 2499 A*求第K短路
- 深入理解计算机操作系统——第11章:全球IP英特网
- OSGeo相关介绍
- SQL Server 2008 R2如何开启数据库的远程连接
- 数组逆序重放
- 搭建伪分布式Hadoop集群
- 学习 《一步步搭建自己的博客》 第一版 边理解边记录
- usaco Ordered Fractions
- superagent-nodejs处理请求的模块
- Linux学习笔记之 LVM
- 高仿系列————主页界面(storyboard)
- 第55讲:Scala中Infix Type实战详解学习笔记
- java中数组与List相互转换的方法
- 11.3 matlab编辑器颜色风格设置
- c语言练习题 4-2 矩阵运算
- XMemcached实例及与spring的集成
- hadoop家族介绍
- DTW,HMM,EM,PCA,贝叶斯,K-NN学习过程
- 三种简单的创建多线程和常用的方法
- 扯下中国院士的神秘面纱(一):丧失了社会良心的院士