Mutex vs Semaphore
Mutex dianalogikan dengan satu kunci ke sebuah ruangan. Seseorang yang memegang kunci, yang analog dengan utas, adalah satu-satunya yang dapat memiliki akses ke kamar. Orang yang memiliki akses kemudian harus menyerahkan kunci kepada orang berikutnya dalam barisan. Oleh karena itu, mutex hanya dapat dirilis oleh utas yang mendapatkannya.
Mutex biasanya digunakan untuk membuat serial akses ke bagian dari kode reentrant '' semacam kode yang tidak dapat dieksekusi oleh beberapa utas sekaligus. Hanya satu utas yang diizinkan menjadi bagian. Ini memaksa utas lainnya menunggu. Sebelum utas mendapatkan akses, ia harus menunggu hingga utas sebelum menyerah pada bagian.
Menggunakan analogi yang sama dalam mutex, semaphores adalah jumlah kunci yang sama yang dapat mengakses jumlah kamar yang sama dengan kunci yang sama. Semaphore atau nilai hitungan semaphore akan tergantung pada jumlah orang (utas) yang masuk atau keluar dari ruangan. Jika ada 5 kamar dan semuanya terisi, maka jumlah semafor adalah nol. Jika dua meninggalkan ruangan, maka hitung adalah dua dan dua kunci diberikan ke dua berikutnya dalam antrian.
Dengan demikian, semaphore dapat secara bersamaan ditandai oleh utas atau proses apa pun dan ideal untuk aplikasi yang membutuhkan sinkronisasi. Namun demikian, semaphore digunakan untuk secara efektif membatasi jumlah pengguna bersamaan dari sumber daya bersama berdasarkan jumlah semaphore maksimum.
Jadi pada dasarnya, sebuah mutex dapat dianggap sebagai semafor yang memiliki nilai satu.
Penurunan dan penambahan semaphore tergantung pada apakah utas meminta akses ke sumber daya bersama atau meninggalkan bagian.
Secara teori, mutex dan (binary) semaphore serupa secara semantik. Implementasi mutex dapat dilakukan dengan menggunakan semaphores dan begitu juga sebaliknya. Namun, dalam arti praktis, mereka bisa sedikit berbeda.
Mutex dimaksudkan untuk diterapkan untuk pengecualian bersama saja dan semaphore biner dimaksudkan untuk digunakan untuk saling pengecualian dan pemberitahuan acara. Meskipun mereka sangat mirip dalam hal implementasi dan semantik umum, mereka digunakan secara berbeda.
Ringkasan:
1. Mutex biasanya digunakan untuk membuat serial akses ke sumber daya umum sementara semaphore adalah sejumlah akses bersamaan.
2. Mutex seperti semaphore dengan hitungan satu.
3. Mutex hanya memungkinkan satu utas untuk memiliki akses sementara semafor dapat secara bersamaan ditandai oleh utas atau proses apa pun.
4. Semaphore ideal untuk sinkronisasi dan sering digunakan untuk pemberitahuan acara dan saling pengecualian sementara mutex hanya diterapkan untuk saling pengecualian.