专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > QT开发

QThreadPool与TCP服务器有关问题

发布时间:2010-05-30 21:30:11 文章来源:www.iduyao.cn 采编人员:星星草
QThreadPool与TCP服务器问题
我要构建一个TCP服务器,长时连接。可能要处理3000个左右的连接。
现在的方法是使用一线程管理一个连接,但这样不好。3000个连接我不是要用3000个线程吗?!
并且很多时候这些线程都是阻塞状态。于是想到用线程池。
看了下QT的QThreadPool和QRunnable,结果问题大条了——QRunnable不是继承QObject类,也就是说没有eventloop。
而这篇文章http://developer.qt.nokia.com/wiki/ThreadsEventsQObjects悲催到提供的方法只有一句话

you have to code that by hand, using low-level threading primitives (like a mutex-guarded queue for collecting results, etc.).

请问大家是怎么解决这个问题的?

------解决方案--------------------
使用线程池可以减少创建线程的时间代价,但这和网络通讯没有太多必然的联系。

我认为没有特别的必要,在线程中的网络通讯还是使用阻塞式的比较好。

关于你说的这个问题,应该属于高并发的范畴。很遗憾的说,Qt没有提供高并发的支持。QTcpSocket还是使用轮询的方式。

想解决这个问题,可以和本地的API进行混编。在Win32下使用“完成端口”,在Linux下可以使用EPOLL
------解决方案--------------------
QT线程部分是incomplete的。。。涉及到线程的东西还是用win32 api或者boost比较好。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: