Tengo un proyecto de Visual Studio 2008 C++ usando Boost 1.47.0 donde necesito obtener el ID nativo de Windows de un boost :: thread para pasar a PostThreadMessage.Obteniendo el ID de un boost :: thread para PostThreadMessage
En Windows Vista y 7, me acaba de hacer esto:
DWORD thread_id = ::GetThreadId(mythread.native_handle());
Esto está muy bien, pero también necesito mi aplicación para trabajar en XP, donde no existe GetThreadId
.
He encontrado que boost: thread almacena el valor de ID de hilo en el miembro de datos privados de boost :: thread :: id thread_data
. Puedo llegar a que al hacer algunos moldes desagradables:
boost::detail::thread_data_base* tdb = *reinterpret_cast< boost::detail::thread_data_base** >(&message_thread.get_id());
DWORD thread_id = tdb->id;
Pero, comienza a recibir las advertencias del compilador para hacer referencia a un objeto temporal boost::thread::id
.
warning C4238: nonstandard extension used : class rvalue used as lvalue
¿Hay alguna manera de obtener la identificación? Es muy frustrante ver la información que necesito, pero no poder acceder a ella.
Gracias, PaulH
Esa es la cosa más genial que he visto hoy. Voy a perder las próximas 3 horas tratando de entenderlo. ¡Gracias! – PaulH
+1 para las notas explicativas adicionales. – PaulH