Qt - 一个简单的回显服务器
在 Qt 中如何让 QThreadPool 中的线程保持活动状态?据我所知,只有一个选项可以运行 QRunnable,并且我被告知他们无法控制它们所在的线程。我如何使用线程池保持套接字处于活动状态并准备好读写?
How in Qt would you keep a thread alive in the QThreadPool; as far as I've seen there is only an option to run a QRunnable and I've been told they can't control the thread they are within. How would I, using the thread pool keep a socket alive and ready to read and write?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
QThreadPool 管理自己的线程。 QT 文档说
所以你不应该试图让线程保持活动状态。这破坏了线程池的目的。
QT 套接字也被设计为与主事件循环良好配合。你为什么不尝试使用它们呢?
QThreadPool manages its own threads. QT Doc says that
So you should not try to keep a thread alive. That breaks the purpose of thread pool.
Also QT sockets are designed to work well with the main event loop. Why don't you try using them ?
a) 只需使用 QThread 后代,而不是线程池。
b) 不要将套接字绑定到线程 - 当 select() 返回时,分配一个线程来处理套接字事件。
平均值,
马丁
a) Just use a QThread descendant, rather than a threadpool.
b) Don't tie sockets to threads - when select() returns, assign a thread to handle the socket event.
Rgds,
Martin