QObject的派生类方法实现多线程死循环问题

代码,借用dbzhang800老师的代码,我修改了点

问题

因为slot里是一个死循环函数,所以当发送 dummy.emitsig2()的时候,

slot2槽函数一直没有执行,只有第一个槽slot执行完成后,slot2槽才能执行

那么如果我想在slot里执行完i += 5;阻塞后,马上通过slot2执行i -= 10;然后得出i值为-5,

但是现在却实现不了,只有slot执行完成,才会去执行slot2,那么我该怎么办呢?

因为slot和slot2是在同一个线程里执行的,那么我怎么才能使slot2执行在与主线程和slot线程不同的线程里呢?

怎样才能实现多个线程同时修改一个变量这种方式呢?

谢谢大家

#include

#include

#include

#include

class Dummy:public QObject

{

Q_OBJECT

public:

Dummy(QObject* parent=0):QObject(parent)     {}

public slots:

void emitsig()

{

emit sig();

}

void emitsig2()

{

emit sig2();

}

signals:

void sig();

void sig2();

};

class Object:public QObject

{

Q_OBJECT

public:

Object(){i = 0;}

int i;

public slots:

void slot()

{

qDebug()<

i += 5;

while(1)//死循环,阻塞线程

{

}

}

void slot2()

{

i-= 10;

qDebug()<

}

};

#include "main.moc"

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

qDebug()<

QThread thread;

Object obj;

Dummy dummy;

obj.moveToThread(&thread);

QObject::connect(&dummy, SIGNAL(sig()), &obj, SLOT(slot()));

thread.start();

dummy.emitsig();

QObject::connect(&dummy, SIGNAL(sig2()), &obj, SLOT(slot2()));

dummy.emitsig2();

return a.exec();

}

死循环线程php,QObject的派生类方法实现多线程死循环问题相关推荐

  1. pythonpyqt5线程暂停重启时间_PyQT5 停止死循环线程(监控文件是否修改)

    说明 在软件使用中,大多数需要使用多线程来实现,并且需要线程长久执行,所以就需要用到死循环,哪如何停止该死循环线程呢? 监控文件是否修改 主界面代码import sys import os from ...

  2. Qt 线程(06):线程和QObject【官翻】

    线程和QObject 前言 QThread继承了QObject. 它发出信号以指示线程已开始执行或完成执行,并且还提供了一些插槽. 更有趣的是,QObjects可以在多个线程中使用,发出调用其他线程中 ...

  3. java 多线程的好处_线程多有什么好处?使用多线程的优势

    线程多有什么好处?提高CPU的利用率,更好地利用系统资源,使用Monitor类可以同步静态/实例化的方法的全部代码或者部分代码段,使用不同的同步类创建自己的同步机制. 多线程指从软件或者硬件上实现多个 ...

  4. java线程堆栈nid.tid_java排查一个线上死循环cpu暴涨的过程分析

    问题,打一个页面cpu暴涨,打开一次就涨100%,一会系统就卡的不行了. 排查方法,因为是线上的linux,没有用jvm监控工具rim链接上去. 只好用命令排查: top cpu排序,一个java进程 ...

  5. linux 进程死循环,Linux下如何处理一次用户态进程死循环问题

    在进行Linux系统操作的时候,有时候会遇到一次用户态进程死循环,即系统反应迟钝.进程挂死等问题,那么遇到这些问题又该如何解决呢?下面小编就给大家介绍下一次用户态进程死循环的问题该如何处理. 1.问题 ...

  6. qt 等待线程结束_实战PyQt5: 128-使用多线程进行并行处理

    多线程是实现并行处理的重要手段,在GUI编程中,经常需要将耗费任务分离,用单独的线程来处理,避免对主线程造成影响(最常见的影响就是会造成主界面无法响应的假死现象).在Qt中,最常用的多线程一般是通过继 ...

  7. (一)Java中的HashMap多线程死循环

    1.HashMap不是线程安全的,在被多线程共享操作时,会有问题,具体什么问题呢,一直没有个清晰的理解,今天写了个测试程序调了一下,才明白其中道理. 2.主要是多线程同时put时,如果同时触发了reh ...

  8. python线程延时函数_详解Python 多线程 Timer定时器/延迟执行、Event事件

    Timer继承子Thread类,是Thread的子类,也是线程类,具有线程的能力和特征.这个类用来定义多久执行一个函数. 它的实例是能够延迟执行目标函数的线程,在真正执行目标函数之前,都可以cance ...

  9. c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划

    作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...

最新文章

  1. ubuntu15.10安装wireshark
  2. 《虚拟化和云计算》实验报告——MININET实践SDN
  3. Elasticsearch启动报错:Exception in thread “main“ java.nio.file.AccessDeniedException:
  4. 【算法】平衡二叉树 Avl 树
  5. c语言程序设计 周信东 数组,c语言程序设计周信东数组
  6. STL 算法接口及用法说明 (二)
  7. Tensorflow学习笔记:使用线性回归进行简单分类
  8. NYOJ题目36-最长公共子序列(经典动态规划题)
  9. python画航线图_pyecharts绘制geo地图
  10. php 扫描条形码,将条形码扫描仪集成到PHP应用程序中?
  11. ROS学习(9)自定义移动机器人模型Gazebo仿真
  12. 智能名片小程序创建名片页的表单校验使用正则表达式整理
  13. 安装BiocManager显示Warning in install.packages : package ‘BiocManager’ is not available for this version
  14. xp开机黑屏故障分析
  15. 媒体应用视频超分AI神器!360P视频一键转换HD
  16. SpringInAction第三章学习笔记:Spring高级装配
  17. PDPS软件:机器人最佳布局位置自动选择功能介绍与使用方法
  18. 2022-2027年中国肺炎疫苗行业市场运行现状及投资战略研究报告
  19. 一摞python风格的纸牌(fluent python阅读)
  20. C#/Winform 节点拖放-TreeView控件

热门文章

  1. 回答一下这些游戏帧数有关的问题吗?
  2. JS 异步发展流程(回调函数=Async/await)
  3. 华东云友会主播栏目01期 阿里云X海底捞,千人千锅就是如此任性!
  4. Bzoj5251: [2018多省省队联测]劈配
  5. 以我的视角看java编程世界
  6. Linux之基本正则表达式(grep)
  7. 在 Delphi 6 中使用 Hashtable
  8. hbase 学习(十五)缓存机制以及可以利用SSD作为存储的BucketCache
  9. linux中apache服务器的搭建与配置
  10. 明智Office之文件实时同步