Mutex vs Semaphore
Mutex mirip dengan satu kunci ke bilik. Seseorang yang memegang kunci, yang sama dengan benang, adalah satu-satunya yang boleh mengakses bilik. Orang yang mempunyai akses itu akan menyerahkan kunci kepada orang seterusnya dalam talian. Oleh itu, mutex hanya boleh dikeluarkan oleh benang yang memperolehnya.
Mutex biasanya digunakan untuk membuat siri akses kepada seksyen kod pengemukaan '' jenis kod yang tidak dapat dilaksanakan oleh beberapa benang sekaligus. Hanya satu benang dibenarkan masuk ke dalam seksyen. Ini memaksa benang lain dalam barisan menunggu. Sebelum benang mendapat akses, ia perlu menunggu sehingga benang sebelum ia menyerah seksyen.
Menggunakan analogi yang sama dalam mutex, semaphores adalah bilangan kekunci yang sama yang boleh mengakses bilangan bilik yang sama dengan kunci serupa. Semaphore atau nilai kiraan semaphore bergantung kepada bilangan orang (benang) yang masuk atau keluar dari bilik. Sekiranya terdapat 5 bilik dan semuanya diduduki, maka kiraan semaphore adalah sifar. Sekiranya dua meninggalkan bilik, kiraannya adalah dua dan kedua-dua kunci diberikan kepada dua seterusnya dalam barisan.
Dengan itu dikatakan, semaphores boleh bersamaan dengan sebarang benang atau proses dan sesuai untuk aplikasi yang memerlukan penyelarasan. Walau bagaimanapun, semaphores digunakan untuk mengehadkan jumlah pengguna serentak secara serentak berdasarkan bilangan semafor maksimum.
Jadi pada asasnya, mutex boleh dianggap sebagai semaphore yang mempunyai nilai satu.
Penurunan dan penambahan semaphore bergantung kepada sama ada benang meminta akses kepada sumber biasa atau meninggalkan bahagian.
Secara teori, mutex dan (binari) semaphores semantik serupa. Pelaksanaan mutex boleh dilakukan menggunakan semaphore dan sebagainya adalah sebaliknya. Walau bagaimanapun, dalam pengertian praktikal, mereka boleh sedikit berbeza.
Mutexes bertujuan untuk digunakan untuk pengecualian bersama dan semaphore biner bertujuan untuk digunakan untuk pengecualian bersama dan pemberitahuan peristiwa. Walaupun mereka sangat serupa dari segi pelaksanaan dan semantik umum, mereka digunakan secara berbeza.
Ringkasan:
1. Mutex biasanya digunakan untuk membahagikan akses kepada sumber yang sama manakala semaphore adalah beberapa akses serentak.
2. Mutex adalah seperti semaphore dengan kiraan satu.
3. Mutex hanya membenarkan satu benang untuk mendapatkan akses manakala semaphores boleh bersamaan dengan sebarang benang atau proses.
4. Semaphores adalah ideal untuk penyegerakan dan sering digunakan untuk pemberitahuan acara dan pengecualian bersama manakala mutex hanya digunakan untuk pengecualian bersama.