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. Javascript中闭包的作用域链
  2. RISC-V应用创新大赛开放报名啦!
  3. EventUtil.addHandler方法
  4. android surfaceview 大小_Android 使用Camera2 API采集视频数据
  5. 企业号开发php,微信企业号-开发笔记-1
  6. 《深入浅出DPDK》读书笔记(三):NUMA - Non Uniform Memory Architecture 非统一内存架构
  7. 为什么饿着饿着就不饿了
  8. ES(Elasticsearch)基本查询总结(含docker安装,python操作)
  9. python系统路径_python中os模块简单了解(系统命令和路径的获取)
  10. nodejs如何运行JavaScript代码
  11. java tbase_让java类继承TBase进行序列化
  12. html黑洞效果,HTML5 Canvas炫酷宇宙黑洞引力特效
  13. Windows 11旗舰版
  14. Ubuntu 图形桌面与命令行界面 切换快捷键
  15. Java方式实现上传微信素材
  16. 河北科技师范学院对口计算机分数线,河北科技师范学院对口分数线
  17. 数据中心运营规划的基本原则
  18. 非拜占庭容错共识算法
  19. 你心心念念的 GitHub手机版APP终于来咯
  20. linux创建文件内容三行,Linux 文本处理三剑客

热门文章

  1. python2.7 tab,自动补全
  2. OSChina 周二乱弹 ——无人超市的出现,未来什么最重要?
  3. 你真的会用Gson吗?Gson使用指南(三)
  4. PostgreSQL 9.5 pg_dump新特性 你是我的眼
  5. 设计模式--请参阅本质
  6. 百度BAE JAVA环境项目部署和调试
  7. CentOS 6.3(x86_32)下安装Oracle 10g R2
  8. 比Jquery FlexiGrid更好用 dotnetFlexGrid 1.2beta更新-增加展现模板模式(Grid中可以放编辑控件和任意Html内容了)...
  9. python 查找excel内容所在的单元格_python 根据excel单元格内容获取该单元格所在的行号...
  10. python程序中想使用正则表达式_如何在python中使用正则表达式提取每行中需要的信息...