关于Qt中线程的挂起和唤醒问题

2023-05-16

为了平台的可移植性,现在好多公司或开发者都在用Qt开发,但是Qt开发文档有一个不非常理想的问题是,有些问题描述的不是太详细,特别是涉及到线程的挂起,唤醒、和sleep()等问题。

在Qt开发中,有许多开发人员常常继承线程QThread,在run()函数内执行要在线程执行的代码,特别是应用在网络多线程接收发的开发中。例如在网络接收和发送数据中,在run()函数内,写了一个while(1)或forever等死循环来持续的接收或发送数据,但是这样会带来一个严重的问题,造成CPU使用率非常高,如果使用的还是老式的,主频非常低的电脑,你会发现你的程序运行起来会非常卡的。这就自然而然的想起怎么优化整个线程调用。

使用QMutex和QWaitCondition结合保证进程同步条件满足的同时也可以进行唤醒和挂起,在run()函数的while(1)循环内调用QWaitCondition::wait(QMutex &)函数运行挂起操作,你会发现,挂起之后,CPU使用率骤然降低,几乎为0;如要想唤醒正在运行的线程,只需调用信号与槽机制,发送一个信号,在槽函数中,调用QWaitCondition::wakeone()函数进行线程唤醒,可以使得线程继续运行。sleep()也与之同理。
     但是有一个问题是非常严重:由于Qt内部的线程之间的信号与槽机制运行和调用才达到10ms级别,不是实时。在接受发比较快时,会发现会丢数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于Qt中线程的挂起和唤醒问题 的相关文章

  • ChatGPT资料汇总学习

    x1f9e0 Awesome ChatGPT ChatGPT资料汇总学习 xff0c 持续更新 ChatGPT再一次掀起了AI的热潮 xff0c 是否还会像BERT一样成为AI进程上的里程碑事件 xff0c 还是噱头炒作 xff0c 持续关
  • Stable Diffusion 本地部署教程不完全指南

    ChatGPT免费体验入口网址 http chat xutongbao top 参考链接 xff1a ERROR Could not find a version that satisfies the requirement torch 6
  • Stable Diffusion +ChatGPT+文本转语音+剪映制作视频

    目录 chatgpt免费体验入口网址 模型下载 huggingface co civitai com 使用Deliberate模型案例 StableDeffusion做的图片 xff0c chatGPT出的文案 xff0c 微软文本转语音配
  • 如何使用 ChatGPT 生成 Stable diffusion 提示词

    chatgpt免费体验入口网址 xff1a http chat xutongbao top 一 教chatgpt写提示词 StableDiffusion是一款利用深度学习的文生图模型 xff0c 支持通过使用提示词来产生新的图像 xff0c
  • Stable Diffusion+Deliberate模型绘制图片

    chatgpt免费体验入口网址 xff1a http chat xutongbao top 正向提示词 1 chinese gril with headphones natural skin texture 24mm 4k textures
  • prompt交易平台

    chatgpt免费体验入口网址 xff1a http chat xutongbao top prompt交易平台 https promptbase com prompt需要花钱购买 也可以售卖自己的prompt 关注公众号领福利
  • New Bing来了

    chatgpt免费体验入口网址 xff1a http chat xutongbao top 参考链接 xff1a https mp weixin qq com s x8RUxofqS43xkZM 5xnTAw
  • select监听多个socket的例子

    先贴上代码 xff0c 回头再仔细编辑 server cpp include lt sys types h gt include lt sys socket h gt include lt netinet in h gt include l
  • chatgpt提示词

    chatgpt免费入口 http chat xutongbao top 担任雅思写作考官 我希望你假定自己是雅思写作考官 xff0c 根据雅思评判标准 xff0c 按我给你的雅思考题和对应答案给我评分 xff0c 并且按照雅思写作评分细则给
  • ffmpeg命令行拉TCP的RTSP流的方法及使用测试记录——RTP over RTSP(TCP)

    1 启动EasyDarwin流媒体服务器 xff0c 然后启动RTSP推流 xff08 1080P 43 h264编码 xff09 xff1a demo dev video0 1920 1080 0 注 xff1a demo 为本地自写的推
  • Linux定时备份文件

    一 编写脚本 创建脚本 写入命令 执行脚本文件 二 设置定时执行本脚本 安装crond 修改crontab内容 重新启动crond服务 一 编写脚本 编写一个脚本文件 xff0c 使脚本可以执行备份命令 例如 xff0c 将文件目录 hom
  • Swift编程语言 FAQ

    作为苹果在WWDC 2014上发布的新编程语言 xff0c Swift绝对是当前的热门话题 Swift由苹果开发者工具部门总监克里斯 拉特纳 xff08 Chris Lattner xff09 耗时四年开发而成 xff0c 苹果宣称Swif
  • 简单理解混淆矩阵—Matlab详细代码注解

    本人计算机小白一枚 xff0c 将自己学到的知识点整理出来 xff0c 一方面是对自己学习的小总结 xff0c 另一方面是欢迎大家批评指正 如果觉得写得还可以 xff0c 大家可以转发关注此博客 xff0c 谢谢 xff01 后续会有新算法
  • ubuntu下/boot空间被占满的解决方法

    ubuntu下 boot空间被占满的解决方法 在安装Ubuntu的时候 xff0c 给 boot文件目录分配空间的时候 xff0c 是100M xff0c boot可以单独分成一个区 xff0c 也可以不单独分 xff0c 在 xff08
  • scikit-learn sklearn 0.18 官方文档中文版

    本人计算机小白一枚 xff0c 将自己学到的知识点整理出来 xff0c 一方面是对自己学习的小总结 xff0c 另一方面是欢迎大家批评指正 如果觉得写得还可以 xff0c 大家可以转发关注此博客 xff0c 谢谢 xff01 后续会有新算法
  • 机器学习面试问题汇总—史上最详细

    本人计算机小白一枚 xff0c 将自己学到的知识点整理出来 xff0c 一方面是对自己学习的小总结 xff0c 另一方面是欢迎大家批评指正 如果觉得写得还可以 xff0c 大家可以转发关注此博客 xff0c 谢谢 xff01 后续会有新算法
  • 从第一个人开始报数(从1到3报数),凡报到3的人退出圈子

    有n个人围成一圈 xff0c 顺序排号 从第一个人开始报数 xff08 从1到3报数 xff09 xff0c 凡报到3的人退出圈子 xff0c 问最后留下的是原来第几号的那位 xff08 1 lt 61 n lt 61 1000000 xf
  • Windows10 Xrdp远程桌面连接ubuntu 20.04,一步到位!

    https blog csdn net avinswang article details 93601312 utm medium 61 distribute pc relevant none task blog BlogCommendFr
  • 远程桌面无响应解决方案

    问题1 mstsc链接远程桌面后 发现只有桌面背景 xff08 桌面图标不见了 xff0c 任务栏不见了 xff0c 鼠标无处可点 xff09 问题2 远程桌面卡住了 问题分析 针对于问题1 xff0c 是因为关闭了explorer exe

随机推荐

  • 公用网络切换为专用网络的详细步骤

    win10连接的网络显示为公用网络 xff0c 一般来说公用网络的安全性不高 xff0c 专用网络安全性会比公用网络要高 具体方法如下 1 我的电脑安装的是win10系统 xff0c 网络状态为 xff1a 公用网络 2 把Windows1
  • mysql使用SSL连接配置学习(一)

    参考 xff1a https www jb51 net article 100432 htm https www cnblogs com mysql dba p 7061300 html 一 SSL介绍 SSL xff08 Secure S
  • 富文本回显

    今天遇了富文本的回显问题 xff0c 查了好多网页 xff0c 最后总结回显最简单方法 xff0c 留个纪念 lt c forEach items 61 34 bidNoticeList 34 varStatus 61 34 status
  • 弹出详细信息窗口

    lt DOCTYPE html PUBLIC 34 W3C DTD HTML 4 01 Transitional EN 34 gt lt html gt lt head gt lt meta charset 61 34 GB 2312 34
  • 字符串中特殊字符处理

    public String htmlReplace String str str 61 str replace 34 amp ldquo 34 34 34 str 61 str replace 34 amp rdquo 34 34 34 s
  • Android开发环境配置

    环境为jdk11 43 android studio2021 jdk11的安装 xff1a 参考https blog csdn net qq 22136439 article details 103295019 注意 xff1a 1 jdk
  • java中文字符乱码编码转换大全

    System out println new String myFileName getBytes 34 gbk 34 System out println new String myFileName getBytes 34 utf 8 3
  • java实现打印套打功能

    package test import java awt print import java awt 实现套打 xff0c 把套打的格式当成一张图片 xff0c 将要填入的数据按其在图片在坐标来定位 public class PrintTe
  • oracle中not in的优化

    ORACLE中NOT IN 的替代 http myjcwy iteye com blog 553563 典型的查询方式为 xff1a SELECT TITLE FROM BOOKSHELF WHERE TITLE NOT IN SELECT
  • Visual Stdio 中的error C2001: 常量中有换行符

    error C2001 常量中有换行符 问题 xff1a 使用Visual Stdio xff0c cout中文的时候 xff0c 有的时候可以正常编译并运行 xff0c 但是有的时候会出现error C2001 常量中有换行符 出现err
  • oracle实现每天定时执行一个计划任务

    http www shangxueba com jingyan 1614101 html oracle实现每天定时执行一个计划任务 创建测试表 SQL gt create table a a date 表已创建 创建一个自定义过程 SQL
  • Spring Security配置访问权限在登录页循环并报错302

    事情是这样的 xff0c 在学习Spring Security框架时 xff0c 使用框架默认的登录页面 xff0c 没有任何问题输入正确的账户和密码后都能登录 xff0c 但是将登录页面换为自定义的页面后就无法登录了 如下 xff1a 密
  • .net core基于Oauth2+jwt两种方式实现身份认证(附单点登录)

    引用地址 xff1a net core基于Oauth2 43 jwt两种方式实现身份认证 附单点登录 cslx5zx5的博客 CSDN博客 net core oauth2 基于 net core 3 1微服务架构的SSO单点登录实战 本文所
  • wordpress中文网站代码下载

    wordpress下载中文网站代码 wordpress网站 https cn wordpress org 下载各个中文版本的 xff1a 提示 xff1a 不用用积分去下载了 方法 xff1a 登录网站 xff1a
  • 源码编译装redis

    源码编译装redis 1 下载包 span class token punctuation span root 64 ZZQVM1 span class token punctuation span span class token com
  • I2C协议

    文章目录 一 什么是I2C xff1f 二 物理层与协议层1 物理层 xff08 1 xff09 I2C总线 xff1a xff08 2 xff09 从地址 xff1a xff08 2 xff09 三种传输模式 2 协议层 xff08 1
  • C++智能指针

    文章目录 前言shared ptrunique ptrweak ptr使用智能指针安全吗 xff1f 前言 下面简单的概括了 3中智能指针的在使用时候需要注意的一些地方 xff0c 三种智能指针在离开其作用域之后都会被自动释放 xff0c
  • centos 7 安装 samba

    centos 7 安装 samba 最近想在linux系统下开发C 43 43 程序 xff0c 想用window的编辑器写代码 xff0c 所以在centos 系统下安装了samba xff0c 让window系统挂载centos 系统的
  • win10如何退出“暂停7天更新”? 恢复自动更新

    services msc 微软社区的解答 xff0c 我复bai制的 断开网络进du行如下操作 xff0c 如果遇到zhi程序占用的问题 xff0c 操作进入到dao安全模式 xff08 设置 更新和安全 恢复 立即重启 xff09 进行
  • 关于Qt中线程的挂起和唤醒问题

    为了平台的可移植性 xff0c 现在好多公司或开发者都在用Qt开发 xff0c 但是Qt开发文档有一个不非常理想的问题是 xff0c 有些问题描述的不是太详细 xff0c 特别是涉及到线程的挂起 xff0c 唤醒 和sleep 等问题 在Q