Keserentakan (sains komputer)

Dalam sains komputer, keserentakan (bahasa Inggeris: concurrency) merupakan satu sifat sistem yang waktu membuat pengiraan-pengiraan bertindih, dan yang membenarkan sumber-sumber yang sama dikongsi antara pengiraan-pengiraan yang bertindih itu. Atau mengikut kata-kata Edsger Dijkstra, "Keserentakan berlaku apabila dua atau lebih aliran pelaksanaan dapat dilakukan dengan serentak." Penggunaan sumber-sumber kongsi dengan serentak merupakan sumber untuk banyak kesulitan. Syarat-syarat lumba yang melibatkan sumber-sumber kongsi boleh mengakibatkan tingkah laku sistem yang tidak dapat diramalkan. Pengenalan ekslusi bersaling boleh mencegah syarat-syarat lumba, tetapi juga boleh mengakibatkan masalah-masalah seperti kebuntuan dan kebuluran sumber. Perekaan bentuk sistem-sistem keserentakan seringnya melibatkan mencari-cari teknik-teknik yang boleh dipercayai untuk menyeleraskan pelaksanaan, pertukaran data, peruntukan ingatan, dan penjadualan pelaksanaan supaya dapat mengurangkan masa gerak balas dan memaksimumkan truput.

Teori

Teori keserentakan merupakan bidang penyelidikan yang aktif dalam sains komputer teori sejak penerbitan karya Carl Adam Petri yang sangat besar pengaruhnya mengenai jaring Petri pada awal dekad 1960-an. Sejak dari masa itu, berbagai-bagai model teori, logik, dan alat-alat untuk memahami sistem-sistem serentak telah dikembangkan.

Logik

Berbagai-bagai jenis logik masa boleh digunakan untuk membantu pertimbangan tentang sistem-sistem serentak. Sesetengah logik itu, seperti logik masa linear dan logik pokok pengiraan, membenarkan kenyataan dibuat tentang urutan-urutan keadaan yang dialami oleh sebuah sistem serentak. Yang lain seperti logik masa tindakan oleh Lamport, logik Hennessy-Milner, dan logik pokok pengiraan tindakan mendasarkan kenyataan-kenyataannya pada jujukan-jujukan tindakan (perubahan dalam keadaan). Kegunaan utama kesemua logik ini adalah untuk menulis spesifikasi-spesifikasi sistem serentak.

Amalan

Pengaturcaraan serentak merangkumi bahasa-bahasa pengaturcaraan dan algoritma-algoritma yang digunakan untuk melaksanakan sistem-sistem serentak. Pengaturcaraan serentak biasanya dianggap lebih umum, berbanding dengan pengaturcaraan selari kerana ia melibatkan pola-pola komunikasi dan saling tindak yang sembarangan dan dinamik. Sebaliknya, sistem-sistem selari umumnya mempunyai pola-pola komunikasi yang pratertakrif serta berstruktur rapi. Matlamat-matlamat asas pengaturcaraan serentak termasuk ketepatan, prestasi, serta keteguhan. Sistem-sistem selari seperti sistem-sistem pengendalian umumnya direka bentuk untuk beroperasi tak terhingga dan tidak terhenti tanpa dijangka. Sesetengah sistem serentak melaksanakan sejenis keserentakan nyata yang entiti-entiti pengiraan serentak akan bersaing dan berkongsi satu sumber tunggal, tetapi kerumitan-kerumitan persaingan dan pengongsian ini dilindungi daripada pengaturcara.
Oleh sebab sistem-sistem serentak menggunakan sumber-sumber kongsi, sistem-sistem itu biasanya memerlukan penggunaan sejenis pengantara (sering di dalam perkakasannya) dalam pelaksanaannya untuk mengawal capaian sumber-sumber tersebut. Penggunaan pengantara memungkinkan keputusan-keputusan ketaktentuan tak terbatas yang boleh menjejaskan ketepatan dan prestasi sistem serentak.