Semua yang dilakukan thread adalah operasi interleave sehingga bagian dari proses tersebut tampaknya tumpang tindih dalam waktu. Mesin single-core dengan beberapa utas hanya melompat-lompat: ia mengeksekusi potongan-potongan kecil kode dari satu utas, kemudian beralih ke utas lainnya. Penjadwal sederhana memutuskan utas mana yang merupakan prioritas tertinggi dan sebenarnya dieksekusi di inti.
Pada komputer single-core, tidak ada yang benar-benar terjadi "pada saat yang sama". Ini semua hanya eksekusi yang disisipkan.
Ada banyak, banyak cara untuk mencapai interleaving. Banyak.
Katakanlah Anda memiliki proses dua utas sederhana yang menggunakan kunci sederhana sehingga kedua utas dapat menulis ke variabel umum. Anda memiliki enam blok kode.
- T1-sebelum mengunci
- T1-dengan kunci
- T1-setelah kunci
- T2-sebelum mengunci
- T2-dengan kunci
- T2-setelah kunci
[Ini bisa dalam satu lingkaran atau memiliki lebih banyak kunci atau apa pun. Yang dilakukannya adalah lebih lama, tidak lebih kompleks.]
Langkah-langkah T1 harus dijalankan secara berurutan (T1-sebelum, T1-dengan, T1-setelah) dan langkah-langkah T2 harus dijalankan secara berurutan (T2-sebelum, T2-dengan, T2-setelah).
Selain kendala "dalam urutan", ini dapat disisipkan dengan cara apa pun. Bagaimanapun caranya. Mereka dapat dijalankan seperti yang tercantum di atas. Pemesanan lain yang valid adalah (T1-before, T2-before, T2-lock, T1-lock, T2-after, T1-after). Ada banyak pemesanan yang valid.
Tunggu.
Ini hanya mesin negara dengan enam negara.
Ini adalah automata keadaan terbatas non-deterministik. Urutan status T1-xxx dengan status T2-xxx tidak pasti, dan tidak masalah. Jadi ada tempat di mana "negara bagian selanjutnya" adalah lemparan koin.
Misalnya, ketika FSM dimulai, T1-before atau T2-before keduanya adalah status pertama yang sah. Lempar koin.
Katakanlah itu muncul T1-sebelumnya. Lakukan itu. Ketika itu selesai, ada pilihan antara T1-dengan dan T2-sebelumnya. Lempar koin.
Pada setiap langkah dalam FSM akan ada dua pilihan (dua utas - dua pilihan) dan lemparan koin dapat menentukan negara bagian mana yang diikuti.