游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1421|回复: 1

网络中:关于接收消息的队列,io线程和消息处理线程怎

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-12-5 22:36:00 | 显示全部楼层 |阅读模式
我有个问题,服务器socket接收队列和处理消息的线程(应该是典型的生产者和消费者线程调度的关系)是不是这样的关系:当队列消息达到一定数量的时候才解锁,把可处理标记设置为true,然后让处理线程进来处理消息,处理完释放锁,然后把可处理标志设置为false,然后io又继续接收消息,可问题是:如果cpu很忙,处理过程中消息又来了往哪里放啊?总不至于等处理消息的线程解锁再迁移数据吧?难不成要建两个队列,消息接收队列和消息处理队列分开?

我的想法是:a是处理队列,b是消息接收队列,b只有接收线程来操作,不用上锁,a队列处理线程和io线程都要操作,需要交换锁定,也不知道是不是这样。

那是否应该做两个队列?
否则cpu处理消息的时候,数据都没办法堆放了,tcp的流都不间断的。

也许是我多虑了。

7

主题

82

帖子

110

积分

注册会员

Rank: 2

积分
110
QQ
发表于 2007-12-7 13:35:00 | 显示全部楼层

Re:网络中:关于接收消息的队列,io线程和消息处理线程

差不多就可以采用你后面描述的那样,两个队列,不过加锁的队列反过来,锁也只要一个,就是写锁,交换队列时用的也是写锁,读的不要锁

在我的主题中对此做过详细描述,后面有些回复的讨论也可以看看
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-17 17:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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