【发布时间】:2011-02-24 08:20:34
【问题描述】:
如何将 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 呢?
-
我有很多与windows线程一起工作的代码,目前我没有足够的时间将它们转换为boost.Thread,另外,我从未使用过boost.thread。
-
您不需要全部转换。但是 Boost.Thread 是类型安全的,并且非常直观地处理了这个问题。
标签: c++ windows boost shared-ptr beginthreadex