Prefiero que esto sea un comentario pero toma demasiados caracteres. De todos modos, a juzgar por las preguntas en las respuestas de tus comentarios, parece que te estás perdiendo el punto de que simplemente no puedes decir que mi hilo tarda tanto en ejecutarse y espera que funcione mágicamente junto con otros hilos, todo gracias al sistema operativo. Tienes que diseñar tus hilos y analizarlos para el peor desempeño. Si el peor de los casos no cumple con sus requisitos, necesita rediseñar sus hilos.
Entonces, en lugar de simplemente decir que el hilo 1 tarda 10 ms en completarse y el hilo 2 tarda 20 ms, también debe decir que el hilo 1 debe ejecutarse cada 15 ms. El hilo 2 debe ejecutarse cada 40 ms. El subproceso 3 debe ejecutarse cada 500 ms, el subproceso N debe ejecutarse cada 1500 ms. Luego, asigna tiempo para la duración de cada subproceso en el peor de los casos. Pones todo eso junto, identificas los peores escenarios posibles y luego tienes que asegurarte de que cada hilo cumpla con sus requisitos de tiempo. Este análisis también es donde usted identifica si algunos subprocesos deben tener una prioridad más alta que otros para cumplir con sus requisitos de tiempo.
Por ejemplo, el subproceso 5 que se está ejecutando se interrumpe por el subproceso 4 que se interrumpe por el subproceso 3 que se interrumpe por el subprocesoN podría ser el peor de los casos. Coloca todo esto en una línea de tiempo y verifica que incluso en este peor de los casos, cada hilo cumple con sus requisitos de tiempo. Puede asegurarse de que los subprocesos completen este peor escenario de manera determinista utilizando el planificador y las prioridades en un sistema operativo en tiempo real. Ese determinismo es lo que hace que un sistema operativo en tiempo real.
Si hace que los subprocesos tengan la misma prioridad, habrá perdido parte de ese determinismo (si no todo) porque el programador puede elegir libremente el subproceso que quiera ejecutar a continuación.
En un sistema operativo como Windows, no solo no puede especificar cuándo se ejecutará cada subproceso, sino que tampoco puede garantizar que su aplicación se ejecutará en cualquier momento. El sistema operativo podría detener su aplicación y ejecutar algún servicio en segundo plano cuando lo desee. En otras palabras, no hay determinismo. Por lo tanto, Windows no es un sistema operativo en tiempo real. Aunque, si sus requisitos de tiempo son grandes, como (el hilo 1 se ejecuta cada 10 segundos, el hilo 2 se ejecuta cada 15 segundos), entonces esencialmente puede tratar a Windows como un sistema operativo en tiempo real siempre que tenga en cuenta la pendiente y aproximadamente cada 10 o 15 segundos. (dar o tomar unos cientos de milisegundos y una ventana perdida ocasional) es suficiente.