windows如何自动分配线程?

jamesking 2007-08-29 05:10:05
我想知道windows是如何自动分配线程的。

假设:我的CPU是双核的。有一个多线程的程序,包含A、B、C三个线程,开始的时候三者的都处于空闲等待状态。Windows会如何分配我的线程?如果windows 将A、B分配到第一个核心上,将C分配到第二个核心上。那么在运行过程中A和B的运算量逐渐变得很大,而C的运算量始终很小。windows是否会自动将A、B中的一个切换到空闲的核心上?

如果不会自动切换,是否需要用户编程指定A和B采用不同的核心?那对于程序运行在单核CPU上又该如何处理?
...全文
986 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
兰穆达 2010-08-17
  • 打赏
  • 举报
回复
楼组不妨看看linux核心怎样调度,或者查阅有关资料,这里问不是个办法。
mrright_ 2010-04-18
  • 打赏
  • 举报
回复
学习了 。。
zy_914 2007-09-14
  • 打赏
  • 举报
回复
接分
jamesking 2007-09-13
  • 打赏
  • 举报
回复
我主要是想问:
当一个线程被分配在A核心上运行后,是否始终都绑定在A核心上,直到线程结束。
系统会不会根据各核心的繁忙程度动态调整当前已经分配的线程?
aa_99_liu 2007-09-13
  • 打赏
  • 举报
回复
程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。线程可以创建和撤消线程,从而实现程序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态。

在多中央处理器的系统里,不同线程可以同时在不同的中央处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多处理器的操作系统都提供编程接口来让进程可以控制自己的线程与各处理器之间的关联度
david_xie 2007-09-13
  • 打赏
  • 举报
回复
路过
jamesking 2007-09-12
  • 打赏
  • 举报
回复
再顶
king1203 2007-09-07
  • 打赏
  • 举报
回复
jamesking 2007-09-05
  • 打赏
  • 举报
回复
期盼高手能解答,我在编程中要考虑到这个问题。
middle 2007-09-02
  • 打赏
  • 举报
回复
操作系统统计其上运行的线程个数以及各个线程的繁忙程度(繁忙程度只能从该线程的历史运行状况做一个大致的推测),在每次线程切换的时候检查不同CPU之间的work load是否差距过大,如果过大就调整线程的运行CPU,使各个CPU的work load尽量相等。
jamesking 2007-09-02
  • 打赏
  • 举报
回复
当初Intel的Pentium D和Pentium EE采用的是独立式二级缓存,后来的Core Duo才是两个内核共享二级高速缓存。
如果操作系统可以切换线程,那么Pentium D和Pentium EE的CPU操作时间肯定要比Core Due要慢,因为二级缓存要重新从内存中读取数据。
另外多CPU的情况又是如何?因为不同的CPU使用的二级缓存肯定不一样。操作系统可不可以在不同的CPU之间切换线程?
jamesking 2007-09-02
  • 打赏
  • 举报
回复
楼上的能否说清楚一点:

1.Windows是否支持运行中的线程从繁忙的核心切换到空闲的核心?
2.Windows是否支持睡眠中的线程被唤醒时自动从繁忙的核心切换到空闲的核心?

解释:
运行中的线程:比如在做一个很长时间的循环do while或for运算。
睡眠中的线程:比如执行了Sleep或WaitForSingleObjects使自己处于睡眠状态。
jamesking 2007-09-01
  • 打赏
  • 举报
回复
我估计windows可能不支持线程运行态的切换,不知道支不支持线程睡眠态的切换。
zhangyixian525 2007-08-31
  • 打赏
  • 举报
回复
我说说个人的观点,操作系统有自己的进程调度算法。主要有FIFO,优先数调度算法,时间片轮转调度算法等。操作系统会根据自己的算法去调用要执行的相关进程。关于在多核CPU中是否让线程在多个核之间随意的切换还待研究。也不知道操作系统自己的算法能不能让进行自动的转换到空闲的核上去执行。请高手指路
flyingdog 2007-08-30
  • 打赏
  • 举报
回复
每个进程和线程都有优先级。windows如何分配线程就和如何分配进程一样。本着平等共享的原则。
当然每个进程和线程也可以编程指定允许调度的cpu。
另外2个核,3个计算线程的设计不好。

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧