Linux / pthread_create() 函數所使用的線程函數爲什麼必須是靜態函數?

答案:因爲 pthread_create() 函數要求的線程函數必須滿足如下格式:

void *ThreadFunc(void *args);

對於普通類成員函數、虛函數,他們實際上都是包含了調用他們的對象的 this 指針,即:經過編譯器優化,線程函數變爲如下所示:

void *(類名)+ ThreadFunc(this, void *args);

這就導致了該函數的格式是不符合 pthread_create() 對線程函數的要求的。故,如果類成員函數做爲線程函數時,必須是靜態的。

 

(SAW:Game Over!)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章