boost::thread到bind始终是使用copy方式,不管是值类型还是引用类型的指针,都是用copy方式传递,导致结果无法取得。
例如:
void ReceiveMessage(int msgID, void* data, long timeout)
void* retdata = NULL;
boost::thread th2(boost::bind(&ReceiveMessage, 1, retdata, 1));
返回后,retdata指针始终没有内容。
正确做法:
void ReceiveMessage(int msgID, void*& data, long timeout)
void* retdata = NULL;
boost::thread th2(boost::bind(&ReceiveMessage, 1, boost::ref(retdata), 1));
注意点:函数需要用引用参数方式,同时加上boost::ref就能解决这个问题。