- 主题:Linux的任务调度,进程和线程有区别吗?
那可能要看代码才行了。
简单的话,可以做个实验,其两个程序,一个单线程,一个多线程,看看是否获得同样的cpu时间。
【 在 wjhtingerx 的大作中提到: 】
: 我想知道的就是Linux这块具体怎么实现的了?
:
--
FROM 114.242.248.*
>> 系统调度看待这101个线程是完全平等的吗?
是的,如果你没有额外的对线程优先级调度策略进行显式配置的话
>> 进程多建线程,岂不是能获得更多的运行时间?
是的,这就是多线程的优势
--
FROM 120.245.130.*
通常根据设计需要,选择不同的调度算法,满足设计要求。Linux 本身支持多种调度,这个问题没有前提,没有答案的。
【 在 wjhtingerx 的大作中提到: 】
: 假设A进程有100个线程,B进程有1个线程。那么系统调度看待这101个线程是完全平等的吗?这样的话,进程多建线程,岂不是能获得更多的运行时间?
:
--
FROM 222.128.104.*
大体来讲,在不做额外干涉的情况下,多线程总体上获得计算资源是单线程的 N 倍。
撇开调度算法本身,单线程只能用到一个 CPU 核心,多线程能够用到 N 个 CPU 核心。所以 CPU 资源有富余的情况下,必定是多线程占优。
其次,原则上,线程和进程没有多大区别,只是多了个独立的地址空间而已。所以可以近似把多线程看做多进程。因此必定是多线程占优(不要抬杠,抬杠就是你对)。
一般而言,没有特别的理由对多线程进行额外处理。
--
FROM 115.199.129.*