免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1684 | 回复: 2
打印 上一主题 下一主题

[C++] 多线程问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-12 11:18 |只看该作者 |倒序浏览
开发一个server  共有三个client 连上来 分别提供3个port

现在的做法是 打算用一个主线程来跑住业务逻辑  利用共享的fd在主线程做数据收发 子线程做socket连接监控。

将sockid sockfd 以及公共数据(ip,port信息等)全部放在主线程顶部 做全局变量共享

socket连接监控: 在子线程中接受一个sockfd之后,进入for,将子线程阻塞在 accept(...)处, client重连之后 直接覆盖上个fd,实现断线重连

现在问题是:
如果在子线程中全部使用局部变量,一切流程ok
但是一涉及到读写顶部的全局变量的时候 在accept处就接收不到fd了 一直阻塞在此处..(我将所有写数据动作加了mutex,读的没加)

如果保持现在的模型结构不变,有没有更好的办法?

论坛徽章:
0
2 [报告]
发表于 2008-08-12 11:21 |只看该作者
linux
虚拟开发环境:
gcc version 4.3.0 20080428 (Red Hat 4.3.0- (GCC)
2.6.25-14.fc9.i686

项目实施环境
gcc 3
2.4

论坛徽章:
0
3 [报告]
发表于 2008-08-12 11:52 |只看该作者
使用局部变量比使用全局变量要好些啊,为什么要改呢

能提出你的要求么
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP