如何將boost :: shared_ptr作爲指向Windows線程函數的指針傳遞? 假設下面的代碼:如何將boost :: shared_ptr作爲指向Windows線程函數的指針傳遞?
test::start()
{
....
_beginthreadex(NULL, 0, &test::threadRun, &shared_from_this(), 0, &threadID);
...
...
}
/*this is a static function*/
UINT __stdcall test::threadRun(LPVOID lpParam)
{
shared_ptr<test> k = *static_cast< shared_ptr<test>* >(lpParam);
...
}
我覺得這個代碼不正確,你有什麼想法? 我該怎麼做?
編輯:我通過boost :: weak_ptr解決了我的問題。請在此處查看我自己的答案page
爲什麼不直接使用Boost.Thread呢? – jalf 2011-02-24 08:21:46
我有很多與Windows線程工作的代碼,目前我沒有足夠的時間將它們轉換爲boost.Thread,另外,我從來沒有使用boost.thread。 – 2011-02-24 08:23:32
你不需要將它們全部轉換。但Boost.Thread是類型安全的,並且非常直觀地處理了這個問題。 – jalf 2011-02-24 08:33:13