游戏开发论坛

 找回密码
 立即注册
搜索
楼主: sjinny

请问多线程之间使用消息队列通信好吗?

[复制链接]

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2007-1-14 22:00:00 | 显示全部楼层

Re:请问多线程之间使用消息队列通信好吗?

嗯,问题就是有些库本身并不是为多线程环境设计的,所以必须当作一个黑盒,周期性地调用它的breathe(),所以这种模块里就没法用Wait / Notify 机制了……
另外我想,对于一个模块,可能还是一个完整的breathe()之后再处理别的模块的请求比较好,比如Render渲染完了一帧再更新对象的状态,物理引擎计算了一个step再处理控制请求……  ^_^

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2007-1-15 00:41:00 | 显示全部楼层

Re:请问多线程之间使用消息队列通信好吗?

这些模块,大多需要及时地交互,异步了带来的问题恐怕比带来的好处要多。。

而且,CMD队列,前面大量耗时的操作必然阻塞后面,难不成还引入优先级,队列调整,时间片分配?那是在写OS的任务管理。。。

而且线程切换也是有代价的,以此每模块一线程方式,最终将膨胀到不能控制的线程数量。

有些时候,游戏逻辑就是需要等到物理计算得到结果才能进行后续操作,以此模式,强行切开,怕是问题也不少。

个人意见,除非某操作会带来长时间阻塞等待,否则还是不要用多线程模型。

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
发表于 2007-1-15 05:45:00 | 显示全部楼层

Re:请问多线程之间使用消息队列通信好吗?

物理和渲染依赖性比较高,应该没必要作两个。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2007-1-15 09:45:00 | 显示全部楼层

Re:请问多线程之间使用消息队列通信好吗?

多线程一般是应用在有block操作的api上,比如说数据库的阻塞访问,设备的阻塞访问之类的.
除此之外,就是对于有hyper threading支持的cpu或者多cpu的机器,有多线程的支持.

另外实现thread safe也是一件相当麻烦的事.

6

主题

307

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2007-1-15 11:27:00 | 显示全部楼层

Re:请问多线程之间使用消息队列通信好吗?

多线程的逻辑很难设计,也很难调试,但基于目前硬件的发展趋势,多线程是必然的

各线程间的通讯,使用消息队列是个不错的设计,可以将线程互斥操作集中到消息队列中,大大降低开发和维护的难度。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-1-15 11:46:00 | 显示全部楼层

Re:请问多线程之间使用消息队列通信好吗?

我觉得,服务器网络方面交互数据还是要用多线程,客户端单线程就可以了

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2007-1-15 19:28:00 | 显示全部楼层

Re:请问多线程之间使用消息队列通信好吗?

嗯,由于我这个程序还没有完全写出来,所以性能到底怎么样还不清楚。不过我这么做的目的,是让用户能够自己选择线程配置,只是不知道最终效果到底怎么样,可能要等做出来后再测试才能知道了。

目前正在努力实现……  *^_^*

0

主题

17

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2007-1-16 09:55:00 | 显示全部楼层

Re:请问多线程之间使用消息队列通信好吗?

我绝对反对客户端用单线程实现,这是不负责任的行为,编写优雅高效的多线程程序是每个程序员的责任,多线程用得好,只会大大降得程序逻辑(而不是增加),多线程有什么可怕的,这是未来发展的方向,要用户用一个双核的CPU去玩你的单线程游戏,这是对用户最大的不敬,你们每天在研究如何更好的OO编程,研究什么模板元编程,怎就不肯花点心思去研究如何更好的多线程编程

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2007-1-16 10:49:00 | 显示全部楼层

Re:请问多线程之间使用消息队列通信好吗?

@_@!
这个……也不用上升到责任的高度啦……

不过似乎以后PC的CPU会变成N核……那样以后多线程编程是绕不过去的……

6

主题

307

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2007-1-16 12:21:00 | 显示全部楼层

Re: Re:请问多线程之间使用消息队列通信好吗?

十仁: Re:请问多线程之间使用消息队列通信好吗?

我绝对反对客户端用单线程实现,这是不负责任的行为,编写优雅高效的多线程程序是每个程序员的责任,多线程用得...



任何的设计都要从实际出发,平衡考虑

盲目的追求技术的高新,最后只能落得BUG丛生,完不成任务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 06:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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