游戏开发论坛

 找回密码
 立即注册
搜索
楼主: Miu.C

多线程程序对单核有没有帮助??

[复制链接]

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2007-6-2 23:17:00 | 显示全部楼层

Re: 多线程程序对单核有没有帮助??

这么快就6.3了!
sf_200762231722.jpg

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-6-2 23:21:00 | 显示全部楼层

Re: Re:多线程程序对单核有没有帮助??

game_fan: Re:多线程程序对单核有没有帮助??

怎么说?
多线程和单线程效率是一样的!不能提高速度!
但是能并行!在某个时间片可以看作同时执行


单核上多线程又不是并行执行的……而且线程切换还要消耗额外的资源

9

主题

86

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2007-6-3 10:12:00 | 显示全部楼层

Re: Re: Re:多线程程序对单核有没有帮助??

psic: Re: Re:多线程程序对单核有没有帮助??



单核上多线程又不是并行执行的……而且线程切换还要消耗额外的资源

线程切换属于轻量级的,因为线程属于进程的,在同一进程内切换线程,不用更换工作环境(这才是最耗时耗资源的),
谁说单cpu上多线程不是并行的? 我说的是在某个时间!不是某个时刻!
在多路流水的cpu上,都有可能形成汇编指令的并行(在某个时刻,比如同时有一个加法,一个减法就可能)!
for(i=0;i<10;i++)
{
  dosomesthing1;
}
//-----
for(i=0;i<2;i++)
{
  dosomesthing1;
  dosomesthing1;
  dosomesthing1;
  dosomesthing1;
  dosomesthing1;
}
//--------
哪个更好?
再说进程切换时会消耗大量寄存器,本来我们机器的通用寄存器就少,所以会造成大量的push和pop动作,消耗大量空间时间,
所以线程切换比进程切换快N倍!!!



187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
 楼主| 发表于 2007-6-3 12:06:00 | 显示全部楼层

Re:多线程程序对单核有没有帮助??

"所以线程切换比进程切换快N倍!!!"

但是如果我不切换进程那就快了。

9

主题

86

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2007-6-3 12:57:00 | 显示全部楼层

Re:多线程程序对单核有没有帮助??

不切?一旦受阻,整个进程都受阻,
所以没有免费的午餐.多线程还是单线程自己决定咯

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2007-6-3 13:25:00 | 显示全部楼层

Re:多线程程序对单核有没有帮助??


问题倒过来了.

应该是单核对多线程有没有帮助, 多线程对程序有没有帮助.
有些程序需要多线程, 单核可以实现多线程, 这就够了. 首先你不是问你的单核需不需要多线程, 而是要问你的程序需不需要, 你程序需要就用啊. 反正单核也是能实现的.

单核不能提高多线程的效率, 但是多线程能提高程序的效率(只要设计得当).
而且,为了将来,还是考虑多用多线程吧.

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-6-3 15:36:00 | 显示全部楼层

Re: Re: Re: Re:多线程程序对单核有没有帮助??

game_fan: Re: Re: Re:多线程程序对单核有没有帮助??


线程切换属于轻量级的,因为线程属于进程的,在同一进程内切换线程,不用更换工作环境(这才是最耗时耗资源的...


CPU指令的乱序并行执行和线程的并行执行是两码事啊……

而且线程切换比进程切换快,这并不代表线程切换本身不会消耗大量的资源……

9

主题

86

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2007-6-3 16:41:00 | 显示全部楼层

Re:多线程程序对单核有没有帮助??

它们确实是没关系.我的意思是在单核cpu上也有汇编指令级的并行
大量资源?
至少比进程切换少!肯定!
有些程序是不得不用多线程的!你做服务端用单线程?那你牛!那你用N核的cpu都不好使! cpu不会把同一线程的东西分到不同cpu上执行的.

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2007-6-4 03:23:00 | 显示全部楼层

Re:多线程程序对单核有没有帮助??

这有什么好争论的.
又不是没学过操作系统, 多线程很多时候,并不是为了"并行", 而是为了不"阻塞".

比如等待用户输入就是一种阻塞, 你要用后台线程来多利用点cpu, cpu会给你分配时间片( 等待只会分配给其他程序时间,对你这个程序的整体进度没帮助, 多线程就是一个抢占时间的手段).

"并行" 的去做同一件事,是很少有的,也是很难用算法来描述的, 比如并行的解压文件, 这个就是做同时一件事,但是有效利用了双核的同时运行两个线程的特性(否则最多只能发挥cpu 50%),提高整体效率,但是我想这种情况非常少, 同时也很难开发.

多线程主要的用途, 是做不同的事情, 一个事情和另一个事情可以说是不相干的,或者某段时间是不相干的, 这时候就用多线程, 但是为了减少开发的难度, 或者减少同时运行的线程数(因为线程也是有代价的), 可以合并一些,直接用一个后台线程来处理几个不相干的事情.

尤其在多用户,和前台后台概念很清楚的场合, 多线程用得比较多.



89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2007-6-4 14:50:00 | 显示全部楼层

Re:多线程程序对单核有没有帮助??

你还真说对了.
这里就有人没学过操作系统.不过并不妨碍他做游戏的.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 05:40

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表