Wolałbym, żeby to był komentarz, ale wymaga to zbyt wielu znaków. W każdym razie, ozgur, sądząc po pytaniach w twoich odpowiedziach na komentarze, wydaje się, że nie rozumiesz, że nie możesz po prostu powiedzieć, że mój wątek trwa tak długo i oczekuje, że magicznie zadziała w połączeniu z innymi wątkami, a wszystko to dzięki systemowi operacyjnemu. Musisz zaprojektować swoje wątki i przeanalizować je pod kątem wydajności w najgorszym przypadku. Jeśli najgorszy przypadek nie spełnia Twoich wymagań, musisz przeprojektować swoje wątki.
Więc zamiast po prostu powiedzieć, że wątek 1 zajmuje 10 ms, a wątek 2 20 ms, musisz też powiedzieć, że wątek 1 musi być wykonywany co 15 ms. wątek 2 musi być wykonywany co 40 ms. wątek 3 musi być wykonywany co 500 ms, wątek N musi być wykonywany co 1500 ms. Następnie przydzielasz czas, jak długo może trwać wykonanie każdego wątku w najgorszym przypadku. Składasz to wszystko razem, identyfikujesz najgorsze możliwe scenariusze, a następnie musisz upewnić się, że każdy wątek spełnia wymagania czasowe. Ta analiza jest również miejscem, w którym można zidentyfikować, czy niektóre wątki muszą mieć wyższy priorytet niż inne, aby spełnić wymagania czasowe.
Na przykład, uruchomiony wątek5 zostaje przerwany przez wątek 4, który zostaje przerwany przez wątek 3, który zostanie przerwany przez threadN może być jednym z najgorszych scenariuszy. Umieszczasz to wszystko na osi czasu i sprawdzasz, czy nawet w tym najgorszym przypadku każdy wątek spełnia swoje wymagania czasowe. Możesz zapewnić, że wątki ukończą ten najgorszy scenariusz w sposób deterministyczny, używając harmonogramu i priorytetów w systemie operacyjnym czasu rzeczywistego. To determinizm jest tym, co tworzy system operacyjny czasu rzeczywistego.
Jeśli nadasz wątkom ten sam priorytet, stracisz część (jeśli nie całość) tego determinizmu, ponieważ harmonogram może mieć swobodę wyboru dowolnego wątku chce biec następny.
W systemie operacyjnym takim jak Windows nie tylko nie możesz określić, kiedy będzie uruchamiany każdy wątek, ale nie możesz nawet zagwarantować, że aplikacja będzie działać w dowolnym momencie. System operacyjny może zatrzymać aplikację i uruchomić niektóre usługi w tle, kiedy tylko zechce. Innymi słowy, nie ma determinizmu. Dlatego Windows nie jest systemem operacyjnym czasu rzeczywistego. Chociaż, jeśli twoje wymagania czasowe są duże, na przykład (wątek 1 działa co 10 sekund, wątek 2 uruchamia się co 15 sekund), możesz zasadniczo traktować system Windows jak system operacyjny czasu rzeczywistego, o ile uwzględnisz błąd i mniej więcej co 10 lub 15 sekund (daj lub weź kilkaset milisekund i sporadyczne pominięte okno) jest wystarczająco dobre.