0
我試圖執行一個線程對象像這樣調用時:在pthread_create什麼都不做,從一個包裝函數
#include <pthread.h>
#include <iostream>
class Thread
{
private:
int id;
static void * run(void * arg)
{
int tid = (int)arg;
std::cout << "Thread " << tid << " executed." <<std::endl;
pthread_exit(NULL);
}
public:
Thread(int _id);
void start();
int get_id();
};
這裏的公共方法&構造函數的實現:
#include "std_thread.h"
Thread::Thread(int _id)
{
id = _id;
}
void Thread::start()
{
std::cout << "Thread created." <<std::endl;
pthread_t thread;
int rc = pthread_create(&thread, NULL, run, (void*)id);
if(rc)
std::cout << "Return code from thread is " << rc;
}
int Thread::get_id()
{
return id;
}
而這裏的主要:
#include "std_thread.h"
int main()
{
Thread *thd = new Thread(0);
thd->start();
return 0;
}
當我創建線程對象並調用它的啓動方法,這反過來應該打印「線程創建」。並運行線程體 - 它不;實際上,它確實打印了創建到控制檯的線程,但似乎沒有創建線程,或者線程沒有做任何事情。順便一提所有東西都編譯好了,沒有運行時錯誤。
任何想法?
在哪裏,這裏在pthread_join? – ForEveR 2013-04-04 11:57:39
加入一個連接解決了它。任何理由? – stellarossa 2013-04-04 12:13:40