游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9634|回复: 26

为什么处理游戏循环一定要放在Windows消息循环里?

[复制链接]

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2005-7-21 18:19:00 | 显示全部楼层 |阅读模式
我不知道为什么所有的游戏教程都会告诉你,要用PeekMessage,这样可以在OnIdle里处理游戏部分
我觉得这个十分没有必要,难道就不能新开一个游戏线程?!!Windows多线程编程不是装饰品吧,而且现在的计算机往往是多线程优于单线程,而且我也认为多线程比单线程更加容易理解!

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2005-7-21 19:10:00 | 显示全部楼层

Re:为什么处理游戏循环一定要放在Windows消息循环里?

其实你说的方法是可以的,但是需要小心,因为多线程很容易造成死锁,而且线程同步需要耗费资源。多线程的好处就是可以让游戏循环独立于消息循环之外,不会受制影响。所有的教程之所以不用多线程的原因就是上面的原因。

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2005-7-21 20:20:00 | 显示全部楼层

Re:为什么处理游戏循环一定要放在Windows消息循环里?

死锁基本不可能,窗口进程只处理Windows消息,一个很简单的线程而已,与游戏线程几乎没有任何关系,我觉得唯一要注意的就只有退出时,先结束游戏线程

42

主题

418

帖子

418

积分

中级会员

Rank: 3Rank: 3

积分
418
发表于 2005-7-22 09:36:00 | 显示全部楼层

Re:为什么处理游戏循环一定要放在Windows消息循环里?

开多线程的目的是为了在一个线程处理 IO 或 CPU 长时间空闲时令 CPU 能被其他线程使用,提高 CPU 的利用率。
Windows多线程编程不是装饰品,但也不是任何时候都好用。大多数时候还是单线程方便,至少不要去处理线程同步

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-7-22 09:48:00 | 显示全部楼层

Re:为什么处理游戏循环一定要放在Windows消息循环里?

the simpler the better

2

主题

48

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2005-7-22 10:58:00 | 显示全部楼层

Re:为什么处理游戏循环一定要放在Windows消息循环里?

这么简单的结构,没有开多线程的必要
开了才是找事,把游戏循环的概念给搞模糊了

2

主题

48

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2005-7-22 11:07:00 | 显示全部楼层

Re:为什么处理游戏循环一定要放在Windows消息循环里?

多线程优于单线称?是你的猜测
当然可以用多线程实现,新开的游戏线程差不多是个死循环,没有做到很好的同步的话会和主线程抢占cpu
而且游戏线程会牵涉到窗口操作,这点必须要窗口线程,也就是主线程

14

主题

118

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2005-7-22 12:10:00 | 显示全部楼层

Re:为什么处理游戏循环一定要放在Windows消息循环里?

不错的想法,主线程做画面更新。WORK线程做游戏逻辑。
在双CPU中更能发挥双其的效能。也是通常所说的功能与介面分离。
所以在一般的程序设计中,这样做是非常好的。

但是游戏与一般程序不一样,它需要非常高的实时性。
现在很多游戏运行的时候通常CPU都是100%的。为什么?
因这只有这样,游戏才会流畅。所以在一个占用大量CPU资源的情况下,再加入
一个介面线程,就是使用Critical也可能会使画面有停顿的感觉。因为CPU又多了一次切片.
(当然,现在的双内核CPU除外),当然现在的图形处理大都是一GPU完成也是一方面。
调用一步绘图接口不会占用太多的时间.

至于多线程同步问题麻烦,那是对初学者说的。
要做游戏,这点技术上的问题是一定要克服的。
再以后的游戏也都一定向多线程方面发(又是因为双内核,超线程技术?)
当然多线程也不是一定就好的,唉再说下去就没完没了啦。

14

主题

118

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2005-7-22 12:13:00 | 显示全部楼层

Re:为什么处理游戏循环一定要放在Windows消息循环里?

大家可不能再停留在DOS时的想法啦:)

14

主题

118

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2005-7-22 12:14:00 | 显示全部楼层

Re:为什么处理游戏循环一定要放在Windows消息循环里?

不过对目前大家写的性能要就不要的程序,对于现在的硬件来说。
怎么做都可以^^
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 15:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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