Saya lebih suka ini menjadi komentar tetapi terlalu banyak karakter. Ngomong-ngomong, ozgur, menilai dari pertanyaan-pertanyaan dalam tanggapan komentar Anda, Anda sepertinya kehilangan poin bahwa Anda tidak bisa hanya mengatakan bahwa utas saya membutuhkan waktu lama untuk berjalan dan mengharapkannya berfungsi secara ajaib dalam hubungannya dengan utas lainnya semua berkat OS. Anda harus merancang utas Anda dan menganalisisnya untuk kinerja kasus terburuk. Jika kasus terburuk tidak memenuhi persyaratan Anda, maka Anda perlu mendesain ulang utas Anda.
Jadi daripada hanya mengatakan thread 1 membutuhkan 10 ms untuk menyelesaikan dan utas 2 membutuhkan 20 ms, Anda juga harus mengatakan utas 1 harus dijalankan setiap 15 ms. utas 2 harus dijalankan setiap 40 ms. utas 3 harus menjalankan setiap 500 ms, utas harus menjalankan setiap 1500 ms. Lalu Anda mengalokasikan waktu untuk berapa lama setiap utas dapat menyelesaikan dalam skenario kasus terburuk. Anda menyatukan semua itu, mengidentifikasi skenario yang paling buruk dan kemudian Anda harus memastikan setiap utas memenuhi persyaratan waktu. Analisis ini juga di mana Anda mengidentifikasi jika beberapa utas perlu prioritas lebih tinggi daripada yang lain untuk memenuhi persyaratan waktu mereka.
Sebagai contoh, thread5 sedang berjalan akan terganggu oleh thread 4 yang akan terganggu oleh thread 3 yang akan terganggu oleh threadN mungkin menjadi salah satu skenario terburuk. Anda meletakkan semua ini di timeline dan memverifikasi bahwa bahkan dalam skenario terburuk ini setiap utas memenuhi persyaratan waktunya. Anda dapat memastikan utas menyelesaikan skenario kasus terburuk ini secara deterministik dengan menggunakan penjadwal dan prioritas dalam OS waktu nyata. Determinisme itulah yang membuat OS waktu nyata.
Jika Anda membuat utas sebagai prioritas yang sama maka Anda telah kehilangan sebagian (jika tidak semua) determinisme itu karena penjadwal mungkin bebas untuk memilih utas mana yang ingin dijalankan selanjutnya.
Dalam OS seperti Windows, Anda tidak hanya tidak dapat menentukan kapan setiap utas akan berjalan, Anda bahkan tidak dapat menjamin bahwa aplikasi Anda akan berjalan pada suatu titik waktu. OS dapat menghentikan aplikasi Anda dan menjalankan beberapa layanan latar belakang kapan pun ia mau. Dengan kata lain, tidak ada determinisme. Jadi, Windows bukan OS waktu-nyata. Meskipun, jika persyaratan waktu Anda besar, seperti (thread1 berjalan setiap 10 detik, thread2 berjalan setiap 15 detik) maka Anda pada dasarnya dapat memperlakukan Windows seperti OS waktu nyata selama Anda menghitung slop dan kira-kira setiap 10 atau 15 detik (memberi atau mengambil beberapa ratus milidetik dan jendela yang sering terlewat) cukup baik.