Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QT如何等待1个线程等待其他1个线程执行_Qt - Fatal编程技术网

QT如何等待1个线程等待其他1个线程执行

QT如何等待1个线程等待其他1个线程执行,qt,Qt,如何在qt中等待一个线程等待另一个线程执行 我尝试使用Qt::BlockingQueuedConnection但两个线程都在等待 我的程序是这样的:一个线程是A,另一个线程是B,在线程A中发送信号命令线程B工作,然后在线程B中发送信号命令线程A工作 执行任务类: class ExecuteTask : public QObject { void doWork() { //do something emit toShow(); } } namespace Ui { clas

如何在qt中等待一个线程等待另一个线程执行

我尝试使用
Qt::BlockingQueuedConnection
但两个线程都在等待 我的程序是这样的:一个线程是A,另一个线程是B,在线程A中发送信号命令线程B工作,然后在线程B中发送信号命令线程A工作

执行任务类:

class ExecuteTask : public QObject
{
  void doWork()
  {
   //do something
   emit toShow();
  }
}
namespace Ui {
class ShowData;
}

class ShowData : public QWidget
{
  connect(this , &ShowData::toDoThing, myTask, 
         &ExecuteTask::doWork, Qt::BlockingQueuedConnection);
  connect(myTask , &ExecuteTask::toShow, this, 
         &ShowData ::dealShowData, Qt::BlockingQueuedConnection);
}
void ShowData::dealShowData()
{
   emit toDoThing();
}

请提供一份报告。你现在的问题不清楚。你到底想达到什么目的?你得到了什么?请编辑您的问题,最好用MCVE进行澄清。这是什么类型的问题?重点是什么?你想学点新东西!在Qt框架中,线程有很多事情要做,其中一个想法是QSemaphore。如果我正确理解了您的问题(这是非常困难的),如果您根本不使用线程,那么就容易多了如果您使用
Qt::BlockingQueuedConnection
,那么当第二次发射发生时,您就会死锁,因为每个线程都在等待另一个线程。如果
需要等待
myTask::doWork
完成,则在此处使用阻塞连接类型,而不是另一种