Perbezaan antara mutex dan semaphore

Perbezaan antara mutex dan semaphore

Mutex vs Semaphore

Mutex sama dengan satu kunci ke bilik. Seseorang yang memegang kunci, yang sama dengan benang, adalah satu -satunya yang boleh mendapat akses ke bilik. Orang yang mempunyai akses itu akan menyerahkan kunci kepada orang seterusnya. Oleh itu, mutex hanya boleh dikeluarkan oleh benang yang memperolehnya.

Mutex biasanya digunakan untuk menyatukan akses ke seksyen kod reentrant '"jenis kod yang tidak dapat dilaksanakan oleh beberapa benang sekaligus. Hanya satu utas yang dibenarkan masuk ke dalam seksyen. Ini memaksa benang lain dalam barisan untuk menunggu. Sebelum benang mendapat akses, ia perlu menunggu sehingga utas sebelum menyerahkan bahagian.

Menggunakan analogi yang sama di mutex, semaphores adalah bilangan kekunci serupa yang dapat mengakses bilangan bilik yang sama dengan kunci yang sama. Semaphore atau nilai kiraan semaphore bergantung kepada bilangan orang (benang) yang masuk atau keluar dari bilik. Sekiranya terdapat 5 bilik dan mereka semua diduduki, maka kiraan semaphore adalah sifar. Jika dua meninggalkan bilik, maka kiraannya adalah dua dan dua kunci diberikan kepada dua seterusnya dalam barisan.

Dengan itu dikatakan, semaphores boleh ditandatangani secara serentak oleh mana -mana benang atau proses dan sesuai untuk aplikasi yang memerlukan penyegerakan. Walau bagaimanapun, semaphores digunakan untuk mengehadkan bilangan pengguna serentak dengan sumber yang sama berdasarkan kiraan semaphore maksimum.

Jadi pada dasarnya, mutex boleh dianggap sebagai semaphore yang mempunyai nilai satu.

Penurunan dan kenaikan semaphore bergantung kepada sama ada benang meminta akses kepada sumber bersama atau meninggalkan bahagian.

Secara teorinya, semaphores mutex dan (binari) secara semantik serupa.Pelaksanaan mutex boleh dilakukan menggunakan semaphores dan begitu juga sebaliknya. Walau bagaimanapun, dalam erti kata praktikal, mereka boleh sedikit berbeza.

Mutexes bertujuan untuk digunakan untuk pengecualian bersama sahaja dan semaphores binari dimaksudkan untuk digunakan untuk pengecualian bersama dan pemberitahuan acara. Walaupun mereka sangat serupa dari segi pelaksanaan dan semantik umum, mereka digunakan secara berbeza.

Ringkasan:

1. Mutex biasanya digunakan untuk mengasingkan akses kepada sumber yang sama manakala semaphore adalah beberapa akses serentak.

2. Mutex seperti semaphore dengan kiraan satu.
3. Mutex hanya membenarkan satu benang mempunyai akses sementara semaphores boleh ditandatangani secara serentak oleh mana -mana utas atau proses.

4. Semaphores sesuai untuk penyegerakan dan sering digunakan untuk pemberitahuan acara dan pengecualian bersama sementara mutex hanya digunakan untuk pengecualian bersama.