我想使用pthread來實現一個線程類。 當然,我想爲我創建的每個線程設置不同的啓動例程。 pthread_create tho只允許一個靜態函數作爲啓動例程,所以它不能被實例化。 有沒有辦法讓這個或更好地使用一個結構來處理我的線程? 這是我SOFAR寫的代碼:Posix線程類和啓動例程(pthread)
class thread {
string name;
pthread_t id;
pthread_mutex_t mutex;
pthread_cond_t cond;
pthread_attr_t attr;
public:
thread (string t_name);
static void* start(void*);
int id_get();
private:
};
thread::thread (string t_name)
{
name = t_name;
pthread_attr_init(&attr);
int stacksize = sizeof(double) * TH_STACK_SIZE * 30;
pthread_attr_setstacksize(&attr, stacksize);
int rc = pthread_create (&id, &attr, &start, NULL);
cout << "return_code: " << rc << endl;
cout << id;
}
void* thread::start(void*)
{
while(1){
cout << "here";
pthread_exit(NULL);
}
}
int thread::id_get()
{
return id;
}
和我的測試主要:
int main(void) {
cout << "Creating threads" << endl;
thread test1("first");
thread test2("second");
pthread_join(test1.id_get(),NULL);
pthread_join(test2.id_get(),NULL);
return 0;
}
爲什麼不使用現有的std ::線程? –
原因我正在交叉編譯ARM,看起來像pthread更便攜(至少這是我讀到的)。 – Podarce
std代表什麼? –