¿Cómo puedo pasar boost :: shared_ptr como un puntero a una función de subproceso de Windows? asumir siguiente código:¿Cómo puedo pasar boost :: shared_ptr como un puntero a una función de subproceso de 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);
...
}
Creo que este código es incorrecto, ¿cuál es tu idea? ¿cómo puedo hacer esto?
EDIT: resolví mi problema por boost :: weak_ptr. verifique mi propia respuesta en este page
¿por qué no usas Boost.Thread en su lugar? – jalf
Tengo una gran cantidad de códigos que funcionan con el hilo de Windows, actualmente no tengo suficiente tiempo para convertirlos a boost. Thread, Además, nunca he usado boost.thread. –
no necesita convertirlos a todos. Pero Boost.Thread es tipo seguro y maneja este problema de manera muy intuitiva. – jalf