Beh*_*z.M 5 c++ windows boost shared-ptr beginthreadex
如何将boost :: shared_ptr作为指向Windows Thread函数的指针传递?假设以下代码:
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);
...
}
Run Code Online (Sandbox Code Playgroud)
我认为这段代码不正确,你的想法是什么?我怎样才能做到这一点 ?
编辑:我通过boost :: weak_ptr解决了我的问题.在这个页面查看我自己的答案
我通过 boost::weak_ptr 解决了我的问题:
test::start()
{
....
shared_ptr<test> shPtr = shared_from_this();
boost::weak_ptr<test> wPtr=shPtr;
_beginthreadex( NULL, 0, &test::threadRun, &wPtr, 0, &threadID );
...
...
}
/*this is a static function*/
UINT __stdcall test::threadRun( LPVOID lpParam )
{
shared_ptr<test> k = static_cast< boost::weak_ptr<test>* >(lpParam)->lock();
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |