Prefiro que este seja um comentário, mas são necessários muitos caracteres. De qualquer forma, ozgur, a julgar pelas perguntas em suas respostas aos comentários, você parece estar perdendo o ponto de que não pode simplesmente dizer que meu tópico demora tanto para ser executado e espera que ele funcione magicamente em conjunto com outros tópicos, tudo graças ao sistema operacional. Você precisa projetar seus threads e analisá-los para obter o pior desempenho possível. Se o pior caso não atender aos seus requisitos, você precisará reprojetar seus threads.
Portanto, em vez de simplesmente dizer que o segmento 1 leva 10 ms para ser concluído e o segmento 2 leva 20 ms, você também deve dizer que o segmento 1 deve ser executado a cada 15 ms. o encadeamento 2 deve ser executado a cada 40 ms. o thread 3 deve executar a cada 500 ms, o threadN deve executar a cada 1500 ms. Em seguida, você aloca tempo para quanto tempo cada thread pode levar para concluir no pior cenário. Você reúne tudo isso, identifica os piores cenários possíveis e precisa garantir que cada thread atenda aos requisitos de tempo. Essa análise também é onde você identifica se alguns encadeamentos precisam ter prioridade mais alta que outros para atender aos requisitos de tempo.
Por exemplo, o encadeamento5 em execução é interrompido pelo encadeamento 4, que é interrompido pelo encadeamento 3, que é interrompido pelo encadeamentoN, pode ser um dos piores cenários. Você coloca tudo isso em uma linha do tempo e verifica se, mesmo no pior cenário, cada encadeamento atende aos seus requisitos de tempo. Você pode garantir que os encadeamentos concluam esse cenário de pior caso de maneira determinística usando o planejador e as prioridades em um sistema operacional em tempo real. Esse determinismo é o que contribui para um sistema operacional em tempo real.
Se você criar threads com a mesma prioridade, perderá parte (se não todos) desse determinismo, pois o planejador pode estar livre para escolher o segmento que deseja executar a seguir.
Em um sistema operacional como o Windows, você não apenas pode especificar quando cada thread será executado, como também não pode garantir que seu aplicativo esteja sendo executado a qualquer momento. O sistema operacional pode interromper seu aplicativo e executar algum serviço em segundo plano sempre que desejar. Em outras palavras, não há determinismo. Portanto, o Windows não é um sistema operacional em tempo real. Embora, se seus requisitos de tempo forem grandes, como (o thread1 é executado a cada 10 segundos, o thread2 é executado a cada 15 segundos), você pode essencialmente tratar o Windows como um sistema operacional em tempo real, desde que você responda pelo problema e aproximadamente a cada 10 ou 15 segundos (mais ou menos algumas centenas de milissegundos e uma janela perdida ocasional) é bom o suficiente.