Mutex vs Semaphore
Mutex digunakan untuk menyediakan akses bersiri ke sebahagian daripada kod pemula semula yang tidak boleh dilaksanakan selari dengan lebih daripada satu benang. Mutex memastikan bahawa hanya satu kod yang boleh mengakses seksyen terkawal pada satu masa. Untuk mendapatkan akses, kod lain dibuat untuk menunggu sehingga kod pertama keluar. Anda boleh menganggapnya sebagai kunci kepada bilik. Orang yang mempunyai akses kepada kunci tersebut terlebih dahulu akan terlebih dahulu. Sehingga masa orang itu kembali, tiada siapa yang boleh mengakses bilik itu.
Semaphore memberikan akses kepada sumber yang dikongsi kepada beberapa pengguna pada masa yang sama. Oleh kerana bilangan pengguna yang mengakses sumber meningkat, kiraan semaphore mengurangkan. Apabila pengguna mula melepaskan sumber, kiraan semaphore mula naik semula. Ia digunakan oleh aplikasi yang memerlukan penyegerakan. Bilangan pengguna serentak dibatasi berdasarkan had semaphore. Semaphore boleh dianggap sebagai sekumpulan kunci yang serupa dengan kunci yang sama ke bilik tunggal, tetapi kekunci ini terhad pada nombor. Orang yang mempunyai kunci ini boleh berkongsi bilik itu.
Perbezaan antara mutex dan semaphore:
1. Mutex digunakan untuk pengecualian bersama manakala semaphore mendapati utiliti dalam kedua-dua peristiwa
pemberitahuan dan pengecualian bersama.
2. Mutex menyediakan akses bersiri kepada sumber biasa manakala semaphore meletakkan batas kepada
bilangan akses serentak.
3. Mutex berfungsi dengan satu thread pada satu masa manakala semaphore menguruskan pelbagai thread
bersama-sama.
4. Mutex mempunyai konsep pemilik di mana proses yang mengunci mutex hanya boleh
buka semula. Tiada proses lain yang boleh dilakukan. Tetapi dalam kes semaphores, seperti itu
sekatan tidak wujud.
5. Mutex adalah mekanisme pengunci manakala semaphore adalah mekanisme isyarat dengan
menghormati menyegerakkan akses kepada sumber.
Ringkasan:
1. Secara semantik dan teori, kedua-dua mutex dan semaphore adalah sama. Satu boleh
dilaksanakan menggunakan yang lain, tetapi praktikal kedua-duanya berbeza.
2. Mutex bukan semata-semata dengan nilai kiraan yang sama dengan satu.
3. Mutex adalah semaphore dengan ciri tambahan seperti pemilikan dan penyongsangan keutamaan
perlindungan.
4. Semaphore adalah jenis data abstrak yang mengawal akses kepada sumber yang sama oleh
pelbagai proses dalam persekitaran pengaturcaraan selari.
5. Semaphore mendapati penggunaannya dalam banyak sistem operasi sebagai penyegerakan primitif.
6. Kedua-dua mutex dan semaphore adalah sumber kernel yang digunakan untuk tujuan
penyegerakan.