Perbezaan Antara Mutex dan Semaphore Perbezaan Antara

Anonim

Mutex vs Semaphore

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

Mutex biasanya digunakan untuk membagikan akses kepada seksyen kod pengemaskinian '"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 kata itu, semaphores boleh bersamaan dengan sebarang benang atau proses dan sesuai untuk aplikasi yang memerlukan penyegerakan. Walau bagaimanapun, semaphores digunakan untuk mengehadkan jumlah pengguna serentak secara serentak dengan berkesan berdasarkan kiraan semaphore maksimum.

Jadi pada dasarnya, 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, semaphores mutex dan (binary) 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 semaphores 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 bersambung dengan akses kepada sumber biasa manakala semaphore adalah beberapa akses serentak.

2. Mutex adalah seperti semaphore dengan kiraan satu.

3. Mutex hanya membolehkan satu benang untuk mengakses manakala semaphores boleh bersamaan dengan sebarang benang atau proses.

4. Semaphore adalah sesuai untuk penyegerakan dan sering digunakan untuk pemberitahuan acara dan pengecualian bersama manakala mutex hanya digunakan untuk pengecualian bersama.