2.如果1的答案为是,那么某个进程有超多的线程,那么这个进程将占据绝大多数CPU时间?
3.如果1的答案为否,那么时间片按进程分,单核多线程速度会比单线程慢呗,因为要线程切换?
10 个解决方案
#1
咱也不知道。。
#2
操作系统书上有
#3
windows 是以线程来分配时间片的。线程,活动时有两个状态,一个是对 cpu 有要求比如SuperPI 的计算过程;一个是在等待消息状态的无要求,其实绝大部分的线程都是这样的状态;所以,一个进程尽管有众多的线程,它所获得的时间片不一定就有多少,这个可在“任务管理器”里看各个进程的状态信息的,同时将进程的线程数和CPU时间打开。
#4
前几天有事,好久没上论坛了,你的意思是说,线程执行很多时候在等消息、是阻塞的,所以线程多时间片不一定多,因为阻塞直接跳过某些线程执行别的去了?
#5
是这个意思吧。
#6
还有其他因素 如优先级 阻塞,同步 异步等,看看操作系统调度算法
#7
1,进程是资源分配单位,线程是CPU调度单位,对大多数操作系统来说,时间片是线程而非进程相关的;
2,不一定,线程的调度执行是有优先级的,优先级高的得到更多时间片,Linux系统中优先级高的线程时间片大于优先级低的时间片,所以进程有多个线程并不一定这个进程会占用更多CPU时间;
3,这个还是跟优先级有关,如果优先级低,线程再多也不能加快执行速度,即使进程是单线程也是通过操作系统来调度的,也会分配时间片,因为后台还有许多线程在调度执行;但有一点是明确的,线程是对CPU的虚拟,进程有多个线程相当于给该进程分配了多个CPU来执行,效率肯定要高于只分配一个CPU来执行。
2,不一定,线程的调度执行是有优先级的,优先级高的得到更多时间片,Linux系统中优先级高的线程时间片大于优先级低的时间片,所以进程有多个线程并不一定这个进程会占用更多CPU时间;
3,这个还是跟优先级有关,如果优先级低,线程再多也不能加快执行速度,即使进程是单线程也是通过操作系统来调度的,也会分配时间片,因为后台还有许多线程在调度执行;但有一点是明确的,线程是对CPU的虚拟,进程有多个线程相当于给该进程分配了多个CPU来执行,效率肯定要高于只分配一个CPU来执行。
#8
第一个问题: 必须是
第二个问题:如果这个进程里的所有线程都是活动的话,那么是的;一般程序里如果经常会用Sleep或者SuspendThread来让一个线程不活动,这样就不会占用CPU时间片
楼主想要了解更详细的原理,可以看《windows核心编程》
第二个问题:如果这个进程里的所有线程都是活动的话,那么是的;一般程序里如果经常会用Sleep或者SuspendThread来让一个线程不活动,这样就不会占用CPU时间片
楼主想要了解更详细的原理,可以看《windows核心编程》
#9
1.是
2.是不是占据绝大多CPU时间,还看操作系统调度策略:批处理,那可能是;分时操作,那可能不是,这也还得看其他进程线程比例。还看线程作业情况,比如,该进程(有很多线程)主要进行IO操作,线程一进CPU运行,不久就被挂起,转而去执行其他线程进程,那还是别的进程占据的时间多。
3.假如时间片是按进程来分的,那单核多线程速度会比单线程快!因为线程切换要比进程切换速度要快很多,这正式线程几大优点之一!
多回看几遍书,啊哈哈哈哈。
2.是不是占据绝大多CPU时间,还看操作系统调度策略:批处理,那可能是;分时操作,那可能不是,这也还得看其他进程线程比例。还看线程作业情况,比如,该进程(有很多线程)主要进行IO操作,线程一进CPU运行,不久就被挂起,转而去执行其他线程进程,那还是别的进程占据的时间多。
3.假如时间片是按进程来分的,那单核多线程速度会比单线程快!因为线程切换要比进程切换速度要快很多,这正式线程几大优点之一!
多回看几遍书,啊哈哈哈哈。
#10
搜“线程调度 毛德操”
#1
咱也不知道。。
#2
操作系统书上有
#3
windows 是以线程来分配时间片的。线程,活动时有两个状态,一个是对 cpu 有要求比如SuperPI 的计算过程;一个是在等待消息状态的无要求,其实绝大部分的线程都是这样的状态;所以,一个进程尽管有众多的线程,它所获得的时间片不一定就有多少,这个可在“任务管理器”里看各个进程的状态信息的,同时将进程的线程数和CPU时间打开。
#4
前几天有事,好久没上论坛了,你的意思是说,线程执行很多时候在等消息、是阻塞的,所以线程多时间片不一定多,因为阻塞直接跳过某些线程执行别的去了?
#5
是这个意思吧。
#6
还有其他因素 如优先级 阻塞,同步 异步等,看看操作系统调度算法
#7
1,进程是资源分配单位,线程是CPU调度单位,对大多数操作系统来说,时间片是线程而非进程相关的;
2,不一定,线程的调度执行是有优先级的,优先级高的得到更多时间片,Linux系统中优先级高的线程时间片大于优先级低的时间片,所以进程有多个线程并不一定这个进程会占用更多CPU时间;
3,这个还是跟优先级有关,如果优先级低,线程再多也不能加快执行速度,即使进程是单线程也是通过操作系统来调度的,也会分配时间片,因为后台还有许多线程在调度执行;但有一点是明确的,线程是对CPU的虚拟,进程有多个线程相当于给该进程分配了多个CPU来执行,效率肯定要高于只分配一个CPU来执行。
2,不一定,线程的调度执行是有优先级的,优先级高的得到更多时间片,Linux系统中优先级高的线程时间片大于优先级低的时间片,所以进程有多个线程并不一定这个进程会占用更多CPU时间;
3,这个还是跟优先级有关,如果优先级低,线程再多也不能加快执行速度,即使进程是单线程也是通过操作系统来调度的,也会分配时间片,因为后台还有许多线程在调度执行;但有一点是明确的,线程是对CPU的虚拟,进程有多个线程相当于给该进程分配了多个CPU来执行,效率肯定要高于只分配一个CPU来执行。
#8
第一个问题: 必须是
第二个问题:如果这个进程里的所有线程都是活动的话,那么是的;一般程序里如果经常会用Sleep或者SuspendThread来让一个线程不活动,这样就不会占用CPU时间片
楼主想要了解更详细的原理,可以看《windows核心编程》
第二个问题:如果这个进程里的所有线程都是活动的话,那么是的;一般程序里如果经常会用Sleep或者SuspendThread来让一个线程不活动,这样就不会占用CPU时间片
楼主想要了解更详细的原理,可以看《windows核心编程》
#9
1.是
2.是不是占据绝大多CPU时间,还看操作系统调度策略:批处理,那可能是;分时操作,那可能不是,这也还得看其他进程线程比例。还看线程作业情况,比如,该进程(有很多线程)主要进行IO操作,线程一进CPU运行,不久就被挂起,转而去执行其他线程进程,那还是别的进程占据的时间多。
3.假如时间片是按进程来分的,那单核多线程速度会比单线程快!因为线程切换要比进程切换速度要快很多,这正式线程几大优点之一!
多回看几遍书,啊哈哈哈哈。
2.是不是占据绝大多CPU时间,还看操作系统调度策略:批处理,那可能是;分时操作,那可能不是,这也还得看其他进程线程比例。还看线程作业情况,比如,该进程(有很多线程)主要进行IO操作,线程一进CPU运行,不久就被挂起,转而去执行其他线程进程,那还是别的进程占据的时间多。
3.假如时间片是按进程来分的,那单核多线程速度会比单线程快!因为线程切换要比进程切换速度要快很多,这正式线程几大优点之一!
多回看几遍书,啊哈哈哈哈。
#10
搜“线程调度 毛德操”