你不用管它几个线程,反正它运行时,必然有一个进程,有一个进程必然有一个主线程来运行入口函数
这就表示
1 一个进程必然有一个主线程,必然有一个入口函数的执行。
2 你启动多个进程【就是启动多个线程,但是进程的内存空间互相分离】
3 即使它在一个进程中使用了多线程,那么每个线程都是有自己的入口函数,每个线程的入口函数,要么执行代码相同,要么不相同,执行流程:完全受系统管制,线程a,线程b,等执行要么抢占式运行,要么谁抢到锁【是否用锁,锁定堆栈区的共享数据,看源码】谁运行。
4、多线程场景下,运行会发生并发和并行情况【可以理解并发=并行,这问题不大】
5、协程大部分都是低层开发者自行撸的一套规则,你要开协程,必然要开个进程,你进了个进程,必然也开了个主线程,三者同时存在【操作系统强制给你开】,有的人写的协程大部分是在一个主线程的基础上做,是要受主线程管制的,一般来说单主线程实现协程是最简单的,如果开了多个线程,那么调度管理将不由你开发人员来控制了。
总结
平常我们启动一个进程,就已经默认启动了一个主线程开始运行入口函数,就算你开大堆的线程,每个线程干的活要么全相同,要么不相同,不管相同不相同,每个线程都有自己的入口函数,都是使用同一个堆栈内存空间,涉及到共享数据的操作,你还得完成数据保护,而多线程的目的只是利用了cpu多核能实现并行并发运行的好处,不要认为这些很神奇。并且你开了大堆的线程,cpu总得来回切换,总得要保存一些数据,来回切换总得花大堆时间,时间都花在切换上了,线程的入口函数业务逻辑都没有时间运行了。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…