我有两个线程一和两个。由它们各自的类在头文件中定义。我想在第一个线程启动时启动第二个线程。在第一个产生的意外结果的构造函数中创建并启动第二个线程。 我的头文件“header.h”C++ qthread同时启动2个线程
#ifndef HEADER
#define HEADER
#include <QtGui>
class One:public QThread
{
public:
One();
void run();
};
class Two:public QThread
{
public:
Two();
void run();
};
#endif
我的类文件“的main.cpp”
#include "header.h"
#include<iostream>
using namespace std;
One::One()
{
/* the output just hangs at thread two and does not get to thread one run */
Two b;
b.start();
b.wait();
}
void One::run()
{
cout<<"One run\n";
int i=0;
for(;;)
{
i++;
cout<<"+++ "<<i<<endl;
if(i==10)
break;
sleep(3);
}
}
Two::Two()
{
}
void Two::run()
{
cout<<"Two run\n";
int i=0;
for(;;)
{
i--;
cout<<"----- "<<i<<endl;
sleep(3);
}
}
int main(int argc,char* argv[])
{
One a;
// Two b;
a.start();
// b.start();
a.wait();
// b.wait();
return(0);
}
这是我多么希望输出运行工作代码。
编辑:改变了代码,因此现在 两个线程都正确 独立
如何启动与第一线沿第二个线程,而不会在主即明确地调用两个。
int main(int argc,char* argv[])
{
One a;
Two b;
a.start();
b.start();
a.wait();
b.wait();
return(0);
}
螺纹两者的调用和处理应该由一个线程来完成..
目前我所拥有的是两个独立运行的线程,它们分开启动。我想要做的是在线程启动时调用第二个线程。 – 2011-03-08 10:58:18
而这没有意义。该线程在您启动时调用。即使您可以从一个线程* object *调用另一个线程* context *到另一个线程,您也无法调用 – Erik 2011-03-08 11:03:51
@Erick我已更改了代码。移除一个线程上下文的调用。我试过在线程的构造函数中调用线程2,这是否是错误的?因为我似乎看不到线程的运行输出。 – 2011-03-08 11:21:02