¿Salir del subproceso al eliminar un objeto estático durante la descarga DLL causa un interbloqueo?

Tengo un ClassA de instancia (objeto global / estático) dentro de mi DLL cargada por demora. Este objeto en el interior tiene un subproceso de "Observador" que se requiere para realizar un cierre correcto. Cuando llamo a FreeLibrary, noté que durante la eliminación de este objeto estático, mi hilo solicitó que se cerrara pero se bloquea en _endthreadex () y provoca un interbloqueo. No importa si llamo a _endthreadex explícita o implícitamente. No importa si el objeto es global o estático: el mismo resultado. Este hilo envuelto en ClassB (implementado por plantilla con bucle de mensaje personalizado). Hay una solicitud para cerrar el subproceso (publicar mensaje) y seguir a WaitForSingleObject que nunca se devuelve para un heandle dado.

La misma "clase de subproceso de plantilla" utilizada en todas partes en el código y el apagado funciona muy bien. El único problema al eliminar obj estático. Creo que hay un bloqueo dentro de _endthreadex () que ya está bloqueado en la descarga dll y la eliminación de objetos estáticos.

El hilo comenzó con _beginthreadex. PD. Cuando instalé el mismo objeto estático dentro de la aplicación, la aplicación se cierra sin ningún problema significativo.

¿Alguna idea de por qué _endtreadex provoca un punto muerto? ¿Cómo evitarlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta