游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1909|回复: 6

疑惑 多线程设计的问题

[复制链接]

12

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2009-2-21 08:34:00 | 显示全部楼层 |阅读模式
一个线程里面调用了 APP::receiveServerData接口, 而主线程也会使用到 receiveServerData里面的一些变量, receiveServerData里面用到的所有变量,在游戏的任何地方只要使用到 都要进行 加锁保护过程吗? 如果是那样, 整个项目将变得多么的复杂???


比如:
void main()
{
   APP::instance().run();
}

APP大概是这样的
APP::run()
{
    创建socket接收线程 socket_receive_thread
    while(1)
   {  
      渲染所有对象
   }
}


APP::receiveServerData( data )
{
    例如:
    m_xxx = xxx;
    m_xxx1 = xxx;
    m_xxx2 = xxx;
    xxx::getSingle().xxx( x );

}

线程函数:
void socket_receive_thread( void )
{
    ...
    ...
    这里接收到服务器消息
    App::instance().receiveServerData( xx )
}

12

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2009-2-21 10:25:00 | 显示全部楼层

Re:疑惑 多线程设计的问题

有人吗?

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2009-2-21 10:33:00 | 显示全部楼层

Re: Re:疑惑 多线程设计的问题

tiantiangame: Re:疑惑 多线程设计的问题

有人吗?

现在才早晨9点,是程序员们熟睡的时间段.
程序员们一般是早上6点开始睡觉,下午1点才起来的.
等他们起来了再回答你吧.

12

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2009-2-21 10:59:00 | 显示全部楼层

Re:疑惑 多线程设计的问题

看来程序员都很舒服, 为什么我们没日没夜 :(

34

主题

629

帖子

629

积分

高级会员

Rank: 4

积分
629
发表于 2009-2-21 13:20:00 | 显示全部楼层

Re:疑惑 多线程设计的问题

一般都是在receiveServerData中把接收的数据保存在缓冲中,在主线程读取缓冲,只给缓冲区加锁

12

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2009-2-21 22:31:00 | 显示全部楼层

Re: Re:疑惑 多线程设计的问题

creamy_mami: Re:疑惑 多线程设计的问题

一般都是在receiveServerData中把接收的数据保存在缓冲中,在主线程读取缓冲,只给缓冲区加锁


这样性能方面会不会有影响呢?

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2009-2-22 09:47:00 | 显示全部楼层

Re:疑惑 多线程设计的问题

这点内存拷贝的性能损耗,远比四处加锁带来的性能损失小得多
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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