免费注册 查看新帖 |

Chinaunix

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

多线程一个应用问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-10-08 10:01 |只看该作者 |倒序浏览
现在项目里有个应用大体是这样的:
5台client会同时向1台server利用socket发送数据,server会同时处理这些数据,处理方法比较复杂,要解码然后存盘,时间比较长. 现在我建立5个线程侦听,希望同时处理. 但实际中server端却只处理了一个client来得数据,不知道为何? 我想是不是处理时的共享变量冲突造成的,因为处理调用的都是几个相同的函数. 因为共享变量太多,用互斥量显然效率也太低.而且不现实.
期望大家来探讨一下,应该怎样实现? 而且效率比较高??

论坛徽章:
0
2 [报告]
发表于 2005-10-08 10:36 |只看该作者

多线程一个应用问题

要不你用信号量试一试,原则上还是一个一个处理的

论坛徽章:
0
3 [报告]
发表于 2005-10-08 10:46 |只看该作者

多线程一个应用问题

信号量没用过. 线程池呢,我是希望实现并行的I/O操作,每个client来得数据要是串形处理的话,不能达到要求.

论坛徽章:
0
4 [报告]
发表于 2005-10-08 12:00 |只看该作者

多线程一个应用问题

用读写锁试试
只读的地方只需要申请读锁,不影响其它地方的读
把像解码/存盘这种比较费时间的操作尽量放在互斥区域之外。

我觉得造成的这样的结果可能是你同步用的不合适,不需要同步的地方同步了或同步范围太大,可以试着改变一下思路换一种同步方式;
如果需求就是如此,那就没办法了。不知道改成多进程有没有什么改变

还有,你好像还没确定这到底是不是同步造成的呢,也许是你代码里的流程就是处理完一个再接收下一个呢,先调调程序确认一下。

论坛徽章:
0
5 [报告]
发表于 2005-10-08 12:32 |只看该作者

多线程一个应用问题

建立5个线程侦听???
为什么这样做??
建立一个线程侦听就够了,应该建立多个线程处理.这样才能保证网络事件不会丢失.(即使这样,也不能完全保证)
同步的问题,是在处理线程里完成,跟侦听没有直接关系.所以同步不会影响你接收数据。

论坛徽章:
0
6 [报告]
发表于 2005-10-08 13:20 |只看该作者

多线程一个应用问题

原帖由 "xunil1012" 发表:
建立5个线程侦听???
为什么这样做??
建立一个侦听侦听就够了,应该建立多个线程处理.这样才能保证网络事件不会丢失.(即使这样,也不能完全保证)
同步的问题,是在处理线程里完成,跟侦听没有直接关系.所以同步不会?.........

you are right。侦听侦听为主线程,收到一个连接就创建一个子线程,用来处理一个c-s连接。

论坛徽章:
0
7 [报告]
发表于 2005-10-08 16:14 |只看该作者

多线程一个应用问题

对,是应该在主线程里侦听. 不过我的程序现在的问题是,数据各个线程其实都接收到了,只是多个线程里的处理发生了混乱,结果导致多个client端来的数据经过处理后,都被保存到一个文件当中.因为对各个client端数据处理过程完全相同,所以我在各个线程当中调用相同的几个函数,我想是不是这里出问题了?......

论坛徽章:
0
8 [报告]
发表于 2006-05-18 17:32 |只看该作者
继续关注中

论坛徽章:
0
9 [报告]
发表于 2006-05-18 18:09 |只看该作者
用个记数器第一个client
保存文件file1
第二个保存文件file2
这样就可以了吧。

论坛徽章:
0
10 [报告]
发表于 2006-05-18 20:48 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP