计算机底层原理之进程和线程
进程
一个程序进入到内存,被称之为进程。
一个QQ.exe可以运行多份么?
可以的,一个程序可以运行多个进程。也就是可以打开两个qq。
同一个进程内部:有多个任务兵法执行的需求(比如,一边计算,一边接受网络数据,一边刷新界面)
能不能用多进程?可以,但是毛病多,最严重的毛病是,我可以很轻松的搞死别的进程。
所以就诞生了线程,共享空间,不共享数据。
进程是静态的:程序进入内存,就会分配对应的资源:内存空间。进程进入内存,同时产生了一个主线程。
线程
线程是动态的:是可执行的计算单元。线程共享进程的空间,如果多个线程同时操作同一个资源,也就是多并发。
一个CPU只有一个内核,一个ALU同一个时间只能执行一个线程。
线程切换(OS)

t1线程在cpu中执行到了0.0001ms的时候,到时间了,需要执行T2线程,这个时候将T1执行到那个指令和寄存器的状态放在缓存中(保存上下文),这个缓存位于这个进程的空间中,保存现场。等T2执行到了一个时间后,再从缓存中将T1的上下文取出来,然后继续执行。
是不是线程数量越多,执行效率越高?
线程越多的话,会有一个切换的过程,耗时也是很多的。
单核CPU多线程执行有没有意义?
有意义。因为一个线程执行到一半的时候,需要将资源让给其他的线程继续执行。
对于一个程序,设置多少个线程合适?

本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/17468078.html

浙公网安备 33010602011771号