server端客户链表存储问题

孟如庭 2014-09-11 05:21:46
最近在研究socket相关编程。自己写了个server端,现在要加个功能是超时,一段时间内,踢出超时的客户端。

功能上实现了,发现了一个大问题,现在使用的list存储客户端,每次涉及到对list的增删操作,都对list加了锁,如果要是接入n多的客户端,list很大,比如1w,两万或者10w(当然实际不会有那么多,只是假设),那判断超时的操作会很长时间,影响了其他操作,比如新客户接入,失效客户删除。。。应该怎么处理呢?


...全文
190 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟如庭 2014-09-15
  • 打赏
  • 举报
回复
引用 8 楼 xian_wwq 的回复:
可以试试timerqueue,每个Client启用一个timerqueuetimer, 对应的超时逻辑放在timerqueuetimer的处理函数中, ------------- http://blog.csdn.net/tpriwwq/article/details/9227479 测试过的并发量比较小,没有到1w
谢谢,等我研究一下。现在的处理没有问题了。
孟如庭 2014-09-15
  • 打赏
  • 举报
回复
引用 6 楼 xihu1364 的回复:
用GetTickCount 计算时间撒 得到毫秒
验证了一半,空跑几十ms,或者0,有超时操作的话,一两百ms。总之,这个问题不大
xian_wwq 2014-09-13
  • 打赏
  • 举报
回复
可以试试timerqueue,每个Client启用一个timerqueuetimer, 对应的超时逻辑放在timerqueuetimer的处理函数中, ------------- http://blog.csdn.net/tpriwwq/article/details/9227479 测试过的并发量比较小,没有到1w
版主大哥 2014-09-12
  • 打赏
  • 举报
回复
用GetTickCount 计算时间撒 得到毫秒
孟如庭 2014-09-12
  • 打赏
  • 举报
回复
引用 3 楼 xihu1364 的回复:
[quote=引用 2 楼 feiyue1206 的回复:] [quote=引用 1 楼 xihu1364 的回复:] 心跳应该只有这样吧! 再说遍历其实花不了多少时间(不包括遍历时其他的花销时间),自己可以试试...
我没用心跳包。直接记录上次通信的时间和这次比对。 我准备用1w个试验下到底多少时间[/quote] 把测试结果 写上看看[/quote] 试验了几次1w的,发现加锁遍历list 1w个,时间也不长,用time计算的时间,有时显示1s,有时显示0,问题不大吧。我小瞧stl的实现了。 试验1w,发现额外的问题,某个地方有内存泄露,我得再查查
  • 打赏
  • 举报
回复
你这是什么应用,要连上万个客户端 难道是网络游戏?
oyljerry 2014-09-12
  • 打赏
  • 举报
回复
引用 5 楼 feiyue1206 的回复:
[quote=引用 3 楼 xihu1364 的回复:] [quote=引用 2 楼 feiyue1206 的回复:] [quote=引用 1 楼 xihu1364 的回复:] 心跳应该只有这样吧! 再说遍历其实花不了多少时间(不包括遍历时其他的花销时间),自己可以试试...
我没用心跳包。直接记录上次通信的时间和这次比对。 我准备用1w个试验下到底多少时间[/quote] 把测试结果 写上看看[/quote] 试验了几次1w的,发现加锁遍历list 1w个,时间也不长,用time计算的时间,有时显示1s,有时显示0,问题不大吧。我小瞧stl的实现了。 试验1w,发现额外的问题,某个地方有内存泄露,我得再查查 [/quote] 1w的处理量对于STL来说不太大
版主大哥 2014-09-11
  • 打赏
  • 举报
回复
引用 2 楼 feiyue1206 的回复:
[quote=引用 1 楼 xihu1364 的回复:] 心跳应该只有这样吧! 再说遍历其实花不了多少时间(不包括遍历时其他的花销时间),自己可以试试...
我没用心跳包。直接记录上次通信的时间和这次比对。 我准备用1w个试验下到底多少时间[/quote] 把测试结果 写上看看
孟如庭 2014-09-11
  • 打赏
  • 举报
回复
引用 1 楼 xihu1364 的回复:
心跳应该只有这样吧! 再说遍历其实花不了多少时间(不包括遍历时其他的花销时间),自己可以试试...
我没用心跳包。直接记录上次通信的时间和这次比对。 我准备用1w个试验下到底多少时间
版主大哥 2014-09-11
  • 打赏
  • 举报
回复
心跳应该只有这样吧! 再说遍历其实花不了多少时间(不包括遍历时其他的花销时间),自己可以试试...

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧