我有兩個線程一和兩個。由它們各自的類在頭文件中定義。我想在第一個線程啓動時啓動第二個線程。在第一個產生的意外結果的構造函數中創建並啓動第二個線程。 我的頭文件「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