作者hotball (哲哲鱼)
看板C_and_CPP
标题Re: [C++/Pthread]member function => thread???
时间Thu May 11 20:16:31 2000
※ 引述《[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