Istilah "konkurensi sejati" muncul dalam studi teoretis tentang perhitungan konkuren dan paralel. Ini berbeda dengan konkurensi interleaving. Konkurensi sejati adalah konkurensi yang tidak dapat direduksi menjadi interleaving. Konkurensi disisipkan jika pada setiap langkah dalam perhitungan, hanya satu tindakan komputasi atom (mis. Pertukaran pesan antara pengirim dan penerima) dapat terjadi. Konkurensi benar jika lebih dari satu aksi atom terjadi dalam satu langkah.
Cara paling sederhana untuk membedakan keduanya adalah dengan melihat aturan komposisi paralel. Dalam pengaturan berbasis interleaving, akan terlihat seperti ini:
P→ P′P| Q→ P′| Q
Aturan ini menegaskan bahwa hanya satu proses dalam komposisi paralel yang dapat melakukan aksi atom. Untuk konkurensi sejati, aturan seperti berikut ini akan lebih tepat.
P→ P′Q → Q′P| Q→ P′| Q′
Aturan ini memungkinkan kedua partisipan dalam komposisi paralel untuk melakukan aksi atom.
Mengapa orang tertarik pada konkurensi interleaved, ketika teori konkurensi benar-benar mempelajari sistem yang menjalankan langkah-langkah komputasi secara paralel? Jawabannya adalah, dan itu adalah wawasan yang hebat, bahwa untuk bentuk-bentuk sederhana pesan yang melewati konkurensi, konkurensi sejati dan konkurensi berbasis interleaving tidak dapat dibedakan secara kontekstual. Dengan kata lain, konkurensi bertautan berperilaku seperti konkurensi sejati sejauh yang bisa dilihat oleh pengamat. Interleaving adalah dekomposisi yang baik dari konkurensi sejati. Karena interleaving lebih mudah ditangani dalam pembuktian, orang sering hanya mempelajari konkurensi berbasis interleaving yang lebih sederhana (misalnya CCS dan π-kalkulus). Namun, kesederhanaan ini menghilang untuk perhitungan bersamaan dengan bentuk pengamatan yang lebih kaya (mis. Perhitungan waktunya): perbedaan antara konkurensi sejati dan konkurensi interleaved menjadi dapat diamati.
Kesetaraan standar seperti bisimulasi dan jejak memiliki definisi yang sama untuk konkurensi berbasis true dan interleaving. Tetapi mereka mungkin atau mungkin tidak menyamakan proses yang berbeda, tergantung pada kalkulus yang mendasarinya.
Biarkan saya memberikan penjelasan informal tentang mengapa interleaving dan interaksi yang benar-benar bersamaan tidak dapat dibedakan dalam kalki proses sederhana. Pengaturannya adalah CCS atau kalkulus seperti . Katakanlah kita punya programπ
Kemudian kita memiliki reduksi yang benar-benar bersamaan:
P
P=x¯¯¯ | y ¯¯¯ | x. y . Sebuah¯¯¯ | y.b¯¯
Langkah reduksi ini dapat dicocokkan dengan langkah-langkah disisipkan berikut:
PP→y. Sebuah¯¯¯ | b ¯¯
Satu-satunya perbedaan antara keduanya adalah bahwa yang pertama mengambil satu langkah, sedangkan yang kedua. Tetapi batu sederhana tidak dapat mendeteksi jumlah langkah yang digunakan untuk mencapai suatu proses.
P→→x¯¯¯ | x. y. Sebuah¯¯¯ | b ¯¯y. Sebuah¯¯¯ | b ¯¯
Pada saat yang sama, memiliki urutan reduksi interleaved kedua berikut:
PP
P→→y¯¯¯ | y. Sebuah¯¯¯ | y. b¯¯Sebuah¯¯¯ | y. b¯¯
Sejujurnya, saya sendiri mencari jawaban di Google. Apa yang dimaksud dengan semantik di sini? Kami memberikan arti "sistem transisi" ke deskripsi "aljabar proses"; artinya adalah sistem transisi yang dihasilkan dari deskripsi sistem awal menggunakan aturan SOS yang ditentukan. Dengan demikian, menggunakan semantik interleaving, kita kehilangan semua struktur bersamaan dalam sistem transisi yang diperoleh.
Jawaban lain bisa jadi itu bukan "perbedaan yang dapat diamati" tetapi perbedaan dalam "kemampuan diamati". Menggunakan semantik interleaving, kita dapat mengamati hanya menjalankan linier; sementara, dengan menggunakan konkurensi sejati, kita dapat mengamati "berjalan berbarengan" (cf W.Reisig'13 Petri nets book).
Namun, saya masih ragu dengan apa yang saya katakan di atas, dan akan menarik untuk mendengar wawasan yang lebih dalam. Yaitu, menggunakan jam vektor Lamport, berapa banyak teori relativitas dapat ditransfer ke teori konkurensi.
sumber