Re: [C++/Pthread]member function => thread???
※ 引述《leesun.bbs@cszone.twbbs.org (八方齋)》之銘言:
: 各位先進:
: 小弟用 C++ & Pthread lib在Linux上寫了一個multi-thread的程式,
: 發現若是將member function傳給pthread_create()當參數的話,將無法正確執行,
: 小弟覺得十分納悶,是compiler偷偷動了什麼手腳嗎?還是pthread有其專用的
: C++ lib?
C++ 的 member function 會「偷偷的」傳一個 this 進去,所以是不能直接傳給
pthread 當參數的。如果是 static member function 就可以。
當然,傳給 pthread 的 function 可以有一個參數,所以你可以把 this 傳進去試試。
不過,比較保險的做法是這樣:
class XXX
{
public:
static void dispatcher(void* obj) { (XXX*)obj->do_the_thing(); }
void do_the_thing();
// ...
};
然後把 XXX::dispatcher 傳給 pthread_create,參數則用你要的 object 的指標。
--
※ 發信站: 批踢踢實業坊(ptt.twbbs.org)
◆ From: ken.csie.ntu.edu.tw
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章