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
나는 윈도우 쓰레드와 함께 작동하는 많은 코드를 가지고있다. 현재는 그들을 부스트로 변환 할 충분한 시간이 없다. 쓰레드, 또한 나는 boost.thread를 사용한 적이 없다. –
모두 변환 할 필요가 없습니다. 그러나 Boost.Thread는 유형 안전성이있어서이 문제를 매우 직관적으로 처리합니다. – jalf