从编程的角度理解进程线程

[关注] 2021-10-26 圈点498

摘要:从编程的角度理解进程线程

从编程的角度理解进程线程


1,关于CPU的cpu数,核心数,进程数

目前常见的是一块主板安装一个CPU,多个核心多个线程。比如 amd公司的 3950X 已经高达64核128线程。

还有一些情况,在一块主板上可以同时安装多个cpu的,服务器上比较常见。


比如64核128线程,其实是将每一个物理核心分成2个线程来共用。



2,线程

理解方法,网络上其实挺多说法,看得多了就会非常乱。其实都是对的,只是出发点不同,角度不同,应用场景不同。

它和进程一样,网络上说法挺多,看得多以致自乱。

从编程语言上来说,它比进程容易理解。

简单来说,在没有进行线程语句操作的情况下,编程语言基本上都是单线程语言,比如你在一个64核128线程的CPU中跑一个没有线程操作的程序代码,那它最多只能用到128个线程中的一个线程,至于具体用到了哪一个线程可以理解成是随机的。

多线程指的是具体能用到CPU中多少路的线程。


比如像64核心128线程的CPU,如果用在游戏上,根本发挥不了它的实际功效。因为绝大部分的游戏没有优化到可以用这么多的核心和线程,就是说它有很多核心是在空转,没有用到。


备注:

有时候吧,英文也是挺复杂挺矛盾的一个东西,有些语言它用thread代表的是进程的概念,有些语言它是用process代表的是线程的概念。单从翻译上来说,线程的英文单词是thread


3,进程

理解方法,网络上其实挺多说法,看得多了就会非常乱。其实都是对的,只是出发点不同,角度不同,应用场景不同。

单从程序编程上来说,进程比线程稍复杂一点,进程简单理解可以这样想,

从编程上来说,假设写了一个程序,程序中只有两个单独功能,一个是读,另一个写。那么读可以说是一个进程,写也是一个进程。它可以先读后写,也可以先写后读,或者是读写同时进行,看实际的场景需要。

一般来说,同一个程序的不同进程会在同一个线程中,当然也可以在不同的线程中,看实际需要。

进程可以理解成是一个程序中的最小小功能或者最小小模块,它可以按实际需要选择是否在不同的线程中运行(一般需要代码实际实现在不同的线程中,否则一般是在同一个线程中运行)。


和线程的备注相同,进程本身的英文单词是process,但不同的语言对于thread/process的概念会有一些混排的情况。


4,协程

协程其实是在同一线程中的进程。

比如,在写某个程序的时候,需要调出一个协程,这个协程一般就是在主程序所在占用CPU线程中添加的一个进程。


进程线程  

感谢反馈,已提交成功,审核后即会显示