Qt - 一个简单的回显服务器

发布于 2024-11-10 18:42:59 字数 112 浏览 1 评论 0原文

在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦旅人picnic 2024-11-17 18:42:59

QThreadPool 管理自己的线程。 QT 文档说

QThreadPool管理和回收
单独的 QThread 对象来提供帮助
减少线程创建成本
使用线程的程序。

所以你不应该试图让线程保持活动状态。这破坏了线程池的目的。

QT 套接字也被设计为与主事件循环良好配合。你为什么不尝试使用它们呢?

QThreadPool manages its own threads. QT Doc says that

QThreadPool manages and recyles
individual QThread objects to help
reduce thread creation costs in
programs that use threads.

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 ?

凝望流年 2024-11-17 18:42:59

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文