Deseo las variables de condición de estilo POSIX en Win32. Tengo un código que necesita ejecutarse en XP, por lo que no puedo usar el CONDITION_VARIABLE
de Vista/Server 2008.Implementando variables de condición para CRITICAL_SECTIONs para Winthreads para XP
Hace uso actualmente de una clase de variable de pseudo condición, que se basa en salir de la sección crítica y señalar un evento de reinicio automático para la señalización/vigilia. Para esperar en la variable de condición, deja la sección crítica, WaitForSingleObject
s en el evento, y luego vuelve a entrar en la sección crítica. Esto está muy bien, pero no es compatible con la transmisión, y puede tener otros problemas con respecto a la equidad, que no me importa demasiado.
Usamos boost, así que sé que podría usar boost threads o pthreads-win32, que soportan variables de condición, pero idealmente me gustaría que la interfaz sea tal que pueda incluir la implementación de Microsoft cuando/si se vuelve posible usarlo directamente. He visto Strategies for Implenting POSIX Condition Variables on Win32, pero la solución "mejor" (la más correcta) usa un Mutex y no un CRITICAL_SECTION
. Hay un boceto de una implementación con CRITICAL_SECTION
en el second part, pero no está completo, y las otras soluciones con CRITICAL_SECTION
me preocupan debido a las preocupaciones que se describen en el artículo.
En resumen, ¿cómo implemento una variable de condición correcta, no necesariamente justa (pero que sería agradable) en win32 para secciones críticas, de modo que pueda pasar a la implementación de Microsoft cuando esté disponible para mí?
Se ve bien! Muchas gracias. –