我正在尝试实现这样的线程对象:
#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;
}
当我创建线程对象并调用它的 start 方法时,该方法又应该打印“Thread created”。并运行线程体 - 它没有;实际上,它确实打印了创建到控制台的线程,但似乎没有创建线程,或者线程没有做任何事情。顺便说一句,一切都编译得很好,并且没有运行时错误。
有任何想法吗?