Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Qt阻塞线程和跨线程通信

Qt阻塞线程和跨线程通信
EN

Stack Overflow用户
提问于 2013-07-20 10:21:03
回答 1查看 1.3K关注 0票数 1

我想问一个关于应用程序架构的问题

将有用于提供用户交互的主GUI线程基于UDP套接字的接收线程,它将在UDP包到达时接收

  1. (希望这是blocking.
  2. Another线程,用于发送基于事件的
  3. 以及定期的UDP包。

我如何在Qt中实现这个架构,基本上我有以下问题:

  1. 对于接收线程,如何使其阻塞?

我知道readyRead()信号,我可以将它连接到某个处理数据报的插槽上,但是我该如何循环它,使这个线程永远这样做呢?

  1. In send Thread我可以从GUI线程产生一个信号,它将被发送线程接收,这里的一个插槽将在套接字上写入一些数据,但同样,当这个线程没有什么可发送时,我的意思是循环,轮询什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-20 13:37:10

在辅助线程中使用事件循环。

QThread::exec()启动线程的事件循环,该循环将一直运行到调用QThread::quit()为止。这应该解决了你的“如何等待事情发生”的问题。QThread::run()的默认实现只调用exec(),所以我选择使用它。您可以在main()方法中设置所有内容,例如,为发送者线程设置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//Create UI
MainWindow mainWindow;
mainWindow.show();

//set up sender thread and the `QObject` doing the actual work (Sender)
QThread senderThread;
Sender sender; //the object doing the actual sending
sender.moveToThread(&sender); //move sender to its thread
senderThread.start(); //starts the thread which will then enter the event loop

//connect UI to sender thread
QObject::connect(&mainWindow, SIGNAL(sendMessage(QString)), &sender, SLOT(sendMessage(QString)), Qt::QueuedConnection);

 ...

 const int ret = app.exec(); // enter main event loop

 `senderThread.quit();` //tell sender thread to quit its event loop
 `senderThread.wait();` //wait until senderThread is done

 `return ret;` // leave main

发送者将仅仅是一个具有执行发送的sendMessage()插槽的QObject,一个QTimer加上用于周期性UDP包的另一个插槽,等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17761198

复制
相关文章
如何为Nginx设置404页面?
这篇文章发布于2013年,介绍如何为nginx设置一个404页面,当客户端试图访问一个并不存在的资源时,nginx会返回代码为404的错误信息"404 Not Found",这个错误信息非常简陋并且不是很友好,建议根据实际需求设置一个专用的404错误页面(如果没有要求可以使用下面的“腾讯公益宝贝回家”404页面,也许一个微不足道的举动,却已帮助了别人。两全其美哈)。
用户1560186
2019/11/20
6.4K0
如何为Nginx设置404页面?
Nginx 和 Apache 配置 SSL 文件签名的不同
这是因为 Nginx 将 Apache 配置需要的 3 个文件中的 2 个文件合并成一个文件了。
HoneyMoose
2022/05/08
6050
Nginx 和 Apache 配置 SSL 文件签名的不同
从nginx返回404来看http1.0和http1.1的区别
所谓智慧,就是能区分自己能改变的部分,自己无法改变的部分,努力去做自己能改变的,而不要天天想着那些无法改变的东西,不然的话,就只能越来越消极了,消极的原因大部分也在于总是关注于自己无法改变的现实。
SRE运维实践
2024/07/12
4530
从nginx返回404来看http1.0和http1.1的区别
在PHP中如何为匿名函数指定this?
关于闭包匿名函数,在JS中有个很典型的问题就是要给它绑定一个 this 作用域。其实这个问题在PHP中也是存在的,比如下面这段代码:
硬核项目经理
2020/05/13
2.2K0
apache 和 nginx 的区别
2、抗并发—–nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
全栈程序员站长
2022/09/05
3960
nginx和apache的区别[通俗易懂]
简单的说apache httpd和nginx都是web服务器,但两者适应的场景不同,也就是两者专注于解决不同的问题。apache httpd:稳定、对动态请求处理强,但同时高并发时性能较弱,耗费资源多。nginx:高并发处理能力强、擅长处理静态请求、反向代理、均衡负载。在 这篇文章详细列出了apache与nginx的13个异同点,下面我们来一一分析其原理。
全栈程序员站长
2022/07/01
4.4K0
Apache 和 Nginx 的区别
2、抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
小手冰凉
2019/09/10
1K0
Apache和Nginx的区别
两者最核心的区别在于 apache 是同步多进程模型,一个连接对应一个进程,而 nginx 是异步的,多个连接(万级别)可以对应一个进程
全栈程序员站长
2022/07/08
3860
Nginx和Apache的区别
2、2019年五月份到2020年五月份的市场份额变化(由此可以看出apache的市场份额占有率在降低,nginx在上升)
北溟有鱼QAQ
2020/05/21
8840
Nginx和Apache的区别
Nginx 和 Apache 安装[通俗易懂]
※ 报错 rm: cannot remove 'libtoolT': No such file or directory
全栈程序员站长
2022/09/01
1K0
nginx php apache php 对比,Apache和nginx的比较「建议收藏」
● 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
全栈程序员站长
2022/09/06
1.6K0
nginx php apache php 对比,Apache和nginx的比较「建议收藏」
Apache配置403和404留住用户
1、如果你的服务器支持htaccess文件 在htaccess配置添加: ErrorDocument 403 /error/403.html#当然,你必须要确定error以及403和404页面存在 ErrorDocument 404 /404.html#当然你也可以写http://www.03377joyous.com/404.html 注意:千万不要直接把404或者403跳转成首页(这样会有可能会让蜘蛛丢掉你的首页抓取) htaccess功能不仅如此,还可以加上文件夹禁止访问以及密码保护等。慢慢摸索去吧~
苦咖啡
2018/05/07
9450
管理-Tomcat和Resin如何配置对指定后缀文件(如:.pptx)下载支持
1. Tomcat,只需要在apache-tomcat-7.0.75\conf\web.xml中配置对应的mime-mapping就行。
秋日芒草
2019/03/15
7690
管理-Tomcat和Resin如何配置对指定后缀文件(如:.pptx)下载支持
如何在Apache和Nginx中启用TLS 1.3
TLS 1.3是传输层安全性(TLS)协议的最新版本,它基于现有的1.2规范和适当的IETF标准:RFC 8446.它提供了比其前代产品更强的安全性和更高的性能改进。
星哥玩云
2022/07/28
3.1K0
如何在Apache和Nginx中启用TLS 1.3
apache 301重定向和禁止访问指定后缀文件
#301重定向 RewriteEngine on RewriteCond %{HTTP_HOST} www.phpfs.com$ [NC] RewriteRule ^(.*)$ http://blog.phpfs.com/$1 [L,R=301] #禁止访问.pem和.log后缀的文件 Order allow,deny Deny from all Deny From All
苦咖啡
2018/04/28
1.5K0
如何在git中删除指定的文件和目录
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113172.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
3.5K0
web服务:Nginx和Apache的区别
  2、抗并发,nginx以epollandkqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞型的。在高并发下nginx能保持低资源低消耗高性能,而apache在PHP处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
全栈程序员站长
2022/09/05
6080
Ingress错误代码友好页面(一)
Ingress是Kubernetes中的一个重要资源对象,用于管理和配置应用程序的外部访问。然而,当Ingress出现问题时,Kubernetes的错误提示并不总是友好和清晰。为了提高用户的使用体验,可以通过自定义错误页面来增强Ingress的错误提示信息,以便更好地解决问题。本文将介绍如何为Ingress配置错误页面,并提供示例。
玖叁叁
2023/05/05
1.3K1
使用nginx error_page 对404 文件做冗余
源由:多个图片服务器图片有差异,可能会出现访问某一台服务器出现404,现在需要不管怎样访问都能访问到。
三杯水Plus
2018/11/14
1.5K0
Nginx和Apache中配置禁止PHP可执行权限
今天继续来说一说安全方面的知识,在项目完成开发后,我们要在测试环境测试,生产环境部署等一系列操作。我们以thinkphp5.1版本为例,在5.1版本中使用了单一入口模式,同时将动态文件和静态文件进行了分离。我们本次主要说一下目录权限和脚本权限。使用过thinkphp框架的知道,我们将index.php文件(入口文件)放置在public目录内。同时也将一些静态资源文件,如样式文件、图片文件及其他文件放置在其中,这里面对目录建议只设置读取和执行权限。对脚本文件只设置读取权限。
申霖
2020/06/18
1.6K0

相似问题

Apache 2.4.18随机为现有文件提供404

10

IIS 7.5返回现有PHP文件的404

10

Nginx子域返回404

10

如何使nginx在空文件上返回404?

10

返回XML文件时nginx与apache的比较

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文