看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《[email protected] (八方齋)》之銘言: : 各位先進: : 小弟用 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