Creo que originalmente no se proporcionó esta información porque cualquier API que proporcionara esta información sería engañosa e inútil.
Considere dos posibles casos: el hilo actual ha suspendido el hilo de interés. Código en el hilo actual sabe sobre el estado suspendido y debería poder compartirlo así que no hay necesidad de que el equipo kernel agregue una API.
El segundo caso, algún otro/un tercer hilo en el sistema ha suspendido el hilo de interés (y no hay manera de rastrear qué hilo fue). Ahora que tiene una condición de carrera, ese otro hilo podría, en cualquier momento, reactivar el hilo de interés y la información recopilada de la API es inútil; tiene un valor que indica que el hilo se suspende cuando, de hecho, no.
Moraleja de la historia: si desea saber que un hilo está suspendido, suspenderlo: el valor de retorno de SuspendThread es el conteo de suspensión anterior del hilo. Y ahora SÍ sabes algo útil: el hilo ESTABA Y SIGUE SI suspendido, lo cual es útil. O que NO FUE (pero ahora está) suspendido. De cualquier manera, el estado del hilo se conoce ahora de manera determinista, por lo que, en teoría, puede tomar algunas decisiones inteligentes basadas en eso, ya sea para reanudar el hilo o mantenerlo suspendido.
Sí, cualquier intento de consultar el estado de suspensión de hilo va a ser intrínsecamente atrevido –
Hay estados de hilos más allá de "suspendido" y "en ejecución". Creo que es más probable que el OP esté interesado en saber qué hilos están bloqueados. En cualquier caso, su punto sobre las condiciones de carrera es bueno. Si hay una forma de obtener el estado de un hilo, debe usarse solo con fines informativos. Cualquier intento de usarlo para controlar el flujo conducirá a un mundo de dolor. –
Exactamente - suspendido o no suspendido no suele ser de interés. Ejecutar o esperar en una señal de sincronización ... eso es lo que suele interesarle, y es claramente algo que puede determinarse ya que los depuradores y las herramientas como el Monitor de rendimiento cubren precisamente esta información. Además, en una aplicación debidamente escrita, los hilos * nunca * se suspenderán a menos que se ejecuten bajo un depurador. – Deltics