进程,主线程,异步线程,多线程和runloop的作用和关系
2017-11-04 15:56
411 查看
用一个形象的比喻来形容进程,主线程,异步线程,多线程和runloop的作用和关系
一个人吃饭的业务场景:(就是相当于一个进程)
角色1:嘴 (第1个黑色箭头,代表主线程)
角色2:左手拿勺子(第2个黑色箭头,代表子线程1)
角色3:右手拿筷子(第3个黑色箭头,代表子线程2)
角色4:锅包肉,地三鲜,鱼香肉丝,西红柿鸡蛋汤,米饭 (各种任务);
请开始你的表演:
现在开始吃饭,嘴开始吃东西(主线程开始运行),左手用筷子夹锅包肉(此刻,左手和嘴并不受影响),再用右手拿勺子喝汤(此刻,左手和嘴也并不受影响),所以我们可以看出,各个线程之间只是执行各自的任务,并不互相影响。
我们继续分析,对于吃饭这件事来说,我断了左手也可以完成,我断了右手也可以完成,但是我要是嘴被封住了,就完成不了了,所以说,在一个进程中,一定要有一个主线程,至于子线程可有可无。
在吃饭的过程中,我用右手夹菜给嘴吃,吃完后,再想吃菜,还要右手夹,嘴里的菜要反复嚼,那么这个行为再程序里就是我们所说的runloop了;
在主线程里runloop默认开启,所以主线程不会死,我们可以从上往下的去执行任务,就像嘴在反复的嚼食物一个,可是对于子线程而言,runloop默认是不开启的;
这就是我对它们之间关系的理解;
4000
相关文章推荐
- 多线程开发(1):主线程,前台线程,后台线程,守护线程,子线程,托管线程的关系
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等
- delphi的多线程实现和线程与进程的关系说明
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码)
- 进程,线程,多进程,多线程以及主线程
- 进程 线程 多线程 并发 同步异步
- [置顶] 【python 多线程】线程与进程的关系
- Java第七课 Java的多线程程序进程和线程的概念,实现多线程的两种方式,线程同步的原理,线程的死锁,运用wait和notify来实现producer - consumer关系,线程终止的两种情况。
- iOS 面试题~RunLoop和线程的关系?runloop的mode作用是什么?
- 并发和并行,多线程和多进程,单核和多核,同步和异步的关系
- 黑马程序员_学习日记65_713ASP.NET(委托、托管、扩展方法、泛型委托、进程_应用程序域_线程、多线程、异步委托)
- 多线程实现闹钟功能以及主线程与子线程的关系说明
- 多线程开发(1):主线程,前台线程,后台线程,守护线程,子线程,托管线程的关系
- 多线程切换以及线程进程之间关系
- 多线程切换以及线程进程之间关系
- 线程进程Java多线程(一)、理解进程与多线程的概念及关系
- iOS 多线程 进程、线程、并发、串行、同步、异步—— iOS 编码复习(四)(多线程2)
- 进程,线程,主线程,异步
- 【多线程】 join 的用法(子线程执行完,执行主线程)