关于多线程停止处理问题?
系统环境:OS:Redhat Linux 7.3
DB:Oracle 8.1.7
我们的通信应用平台就构架在这样的环境下
现在前台GUI给通信应用平台发数据包,以前是一个线程负责接收,并且处理,其中包括对数据库的操作,这样就是重复式,效率不高,这样虽然慢,但是线程不死;然后经过修改,就是又起了一个线程,这个线程专门负责处理接收过来的包,以前的线程只负责接收,改成了并发式,就出现了问题,接收线程接收数据包没问题,一直在接收,但是处理线程处理到500多个包的时候,它就不再处理了,但它并没有死,现在我们往往是把整个应用down了,前台GUI停止发包,然后再把应用起来,前台恢复发包,但还是一样,处理线程处理到500多个包的时候,就不处理了,这是为何?
我察了看了一下,这两个线程的占用CPU都挺大,一般是35%~46%,大家帮忙给分析分析
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论
评论(2)
我碰到的可能是因为accept阻塞引起进程调度阻塞。
我的解决方法是在Widnows端在一个象样的事务后调用一下Sleep(0);
同时吧accept设置成非阻塞的,在超时后调用一下Sleep(0);
。
好像不是这个原因,大家谁还有这方面的经验,说一下