Prefiero que esto sea un comentario, pero se necesitan demasiados caracteres. De todos modos, ozgur, a juzgar por las preguntas en las respuestas de tus comentarios, parece que te estás perdiendo el punto de que no puedes simplemente decir que mi hilo tarda tanto tiempo en ejecutarse y esperar que funcione mágicamente junto con otros hilos todo gracias al sistema operativo. Tienes que diseñar tus hilos y analizarlos para obtener el peor rendimiento posible. Si el peor de los casos no cumple con sus requisitos, entonces debe rediseñar sus hilos.
Entonces, en lugar de simplemente decir que el subproceso 1 tarda 10 ms en completarse y el subproceso 2 toma 20 ms, también debe decir que el subproceso 1 debe ejecutarse cada 15 ms. el hilo 2 debe ejecutarse cada 40 ms. el hilo 3 debe ejecutarse cada 500 ms, el hilo N debe ejecutarse cada 1500 ms. Luego, asigna el tiempo que tarda cada subproceso en completarse 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 identifica si algunos subprocesos deben tener mayor prioridad que otros para cumplir con sus requisitos de tiempo.
Por ejemplo, el subproceso 5 en ejecución se interrumpe por el subproceso 4 que se interrumpe por el subproceso 3 que se interrumpe por el subproceso N podría ser el peor de los casos. Pones todo esto en una línea de tiempo y verificas que incluso en el 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 lo convierte en un sistema operativo en tiempo real.
Si hace que los hilos tengan la misma prioridad, ha perdido parte (si no todo) de ese determinismo porque el planificador puede elegir libremente el hilo que quiera ejecutar a continuación.
En un sistema operativo como Windows, no solo no puede especificar cuándo se ejecutará cada subproceso, ni siquiera 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 (thread1 se ejecuta cada 10 segundos, thread2 se ejecuta cada 15 segundos), esencialmente puede tratar a Windows como un sistema operativo en tiempo real, siempre que tenga en cuenta la falla y aproximadamente cada 10 o 15 segundos (más o menos unos cientos de milisegundos y una ventana perdida ocasional) es lo suficientemente bueno.