首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
专题开发/技术/项目
英特尔多核软件开发
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
windows如何自动分配线程?
[已结贴,结贴人:jamesking]
加为好友
发送私信
在线聊天
jamesking
James
等级:
发表于:
2007-08-29 17:10:05
楼主
我想知道windows是如何自动分配线程的。
假设:我的CPU是双核的。有一个多线程的程序,包含A、B、C三个线程,开始的时候三者的都处于空闲等待状态。Windows会如何分配我的线程?如果windows 将A、B分配到第一个核心上,将C分配到第二个核心上。那么在运行过程中A和B的运算量逐渐变得很大,而C的运算量始终很小。windows是否会自动将A、B中的一个切换到空闲的核心上?
如果不会自动切换,是否需要用户编程指定A和B采用不同的核心?那对于程序运行在单核CPU上又该如何处理?
问题点数:
20
回复次数:
13
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
flyingdog
flyingdog
等级:
发表于:
2007-08-30 11:23:27
1
楼 得分:
3
每个进程和线程都有优先级。windows如何分配线程就和如何分配进程一样。本着平等共享的原则。
当然每个进程和线程也可以编程指定允许调度的cpu。
另外2个核,3个计算线程的设计不好。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zhangyixian525
等级:
发表于:
2007-08-31 11:51:27
2
楼 得分:
5
我说说个人的观点,操作系统有自己的进程调度算法。主要有FIFO,优先数调度算法,时间片轮转调度算法等。操作系统会根据自己的算法去调用要执行的相关进程。关于在多核CPU中是否让线程在多个核之间随意的切换还待研究。也不知道操作系统自己的算法能不能让进行自动的转换到空闲的核上去执行。请高手指路
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jamesking
James
等级:
发表于:
2007-09-01 16:54:39
3
楼 得分:
0
我估计windows可能不支持线程运行态的切换,不知道支不支持线程睡眠态的切换。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
middle
中间件
等级:
发表于:
2007-09-02 00:32:05
4
楼 得分:
5
操作系统统计其上运行的线程个数以及各个线程的繁忙程度(繁忙程度只能从该线程的历史运行状况做一个大致的推测),在每次线程切换的时候检查不同CPU之间的work load是否差距过大,如果过大就调整线程的运行CPU,使各个CPU的work load尽量相等。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jamesking
James
等级:
发表于:
2007-09-02 11:43:48
5
楼 得分:
0
楼上的能否说清楚一点:
1.Windows是否支持运行中的线程从繁忙的核心切换到空闲的核心?
2.Windows是否支持睡眠中的线程被唤醒时自动从繁忙的核心切换到空闲的核心?
解释:
运行中的线程:比如在做一个很长时间的循环do while或for运算。
睡眠中的线程:比如执行了Sleep或WaitForSingleObjects使自己处于睡眠状态。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jamesking
James
等级:
发表于:
2007-09-02 12:07:01
6
楼 得分:
0
当初Intel的Pentium D和Pentium EE采用的是独立式二级缓存,后来的Core Duo才是两个内核共享二级高速缓存。
如果操作系统可以切换线程,那么Pentium D和Pentium EE的CPU操作时间肯定要比Core Due要慢,因为二级缓存要重新从内存中读取数据。
另外多CPU的情况又是如何?因为不同的CPU使用的二级缓存肯定不一样。操作系统可不可以在不同的CPU之间切换线程?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jamesking
James
等级:
发表于:
2007-09-05 12:07:57
7
楼 得分:
0
期盼高手能解答,我在编程中要考虑到这个问题。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
king1203
等级:
发表于:
2007-09-07 17:04:24
8
楼 得分:
1
顶
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jamesking
James
等级:
发表于:
2007-09-12 21:37:38
9
楼 得分:
0
再顶
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
david_xie
等级:
发表于:
2007-09-13 15:49:37
10
楼 得分:
1
路过
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
aa_99_liu
等级:
发表于:
2007-09-13 16:04:18
11
楼 得分:
4
程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。线程可以创建和撤消线程,从而实现程序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态。
在多中央处理器的系统里,不同线程可以同时在不同的中央处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多处理器的操作系统都提供编程接口来让进程可以控制自己的线程与各处理器之间的关联度
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jamesking
James
等级:
发表于:
2007-09-13 16:44:42
12
楼 得分:
0
我主要是想问:
当一个线程被分配在A核心上运行后,是否始终都绑定在A核心上,直到线程结束。
系统会不会根据各核心的繁忙程度动态调整当前已经分配的线程?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zy_914
猫猫
等级:
发表于:
2007-09-14 14:41:11
13
楼 得分:
1
接分
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友