进程,主线程,异步线程,多线程和runloop的作用和关系

本文通过吃饭的比喻形象地解释了进程、主线程、子线程(异步线程)以及RunLoop的概念与作用。嘴代表主线程,左右手分别代表两个子线程,而反复咀嚼的行为则对应于RunLoop的运作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       

       


        用一个形象的比喻来形容进程,主线程,异步线程,多线程和runloop的作用和关系

一个人吃饭的业务场景:(就是相当于一个进程)

角色1:嘴 (第1个黑色箭头,代表主线程)

角色2:左手拿勺子(第2个黑色箭头,代表子线程1)

角色3:右手拿筷子(第3个黑色箭头,代表子线程2)

角色4:锅包肉,地三鲜,鱼香肉丝,西红柿鸡蛋汤,米饭 (各种任务);

请开始你的表演:

   现在开始吃饭,嘴开始吃东西(主线程开始运行),左手用筷子夹锅包肉(此刻,左手和嘴并不受影响),再用右手拿勺子喝汤(此刻,左手和嘴也并不受影响),所以我们可以看出,各个线程之间只是执行各自的任务,并不互相影响。

我们继续分析,对于吃饭这件事来说,我断了左手也可以完成,我断了右手也可以完成,但是我要是嘴被封住了,就完成不了了,所以说,在一个进程中,一定要有一个主线程,至于子线程可有可无。

    在吃饭的过程中,我用右手夹菜给嘴吃,吃完后,再想吃菜,还要右手夹,嘴里的菜要反复嚼,那么这个行为再程序里就是我们所说的runloop了;

在主线程里runloop默认开启,所以主线程不会死,我们可以从上往下的去执行任务,就像嘴在反复的嚼食物一个,可是对于子线程而言,runloop默认是不开启的;

   这就是我对它们之间关系的理解;









评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值