Junior
Mutex və semafor arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Bir mutex ikili semafordur və ya sərbəst (dəyər 1) və ya məşğul (dəyər 0) ola bilər. Kritik bölmələri qorumaq və resursa eksklüziv giriş təmin etmək üçün istifadə olunur. Yalnız mutex-i ələ alan iş parçacığı onu sərbəst buraxa bilər.
Semafor, mutex-in ümumiləşdirilməsidir və sayğacı təmsil edir. O, mənfi olmayan dəyərlər ala bilər və məhdud sayda resursa girişin idarə olunması üçün istifadə olunur. Bir iş parçacığı semaforu əldə edə bilər, əgər sayğac sıfırdan böyükdürsə (onu azaldaraq), və onu sərbəst buraxa bilər (sayğacı artıraraq). Semafor başqa bir iş parçacığı tərəfindən sərbəst buraxıla bilər, mütləq onu əldə edən deyil.
Əsas fərqlər:
- Məqsəd: Mutex kritik bölmələri qorumaq üçün, Semafor resurslara girişin idarə olunması üçün.
- Dəyər: Mutex (0 və ya 1), Semafor (hər hansı mənfi olmayan ədəd).
- Mülkiyyət: Mutex-in sahibi var (onu əldə edən iş parçacığı), Semafor-un isə aydın mülkiyyət anlayışı yoxdur.
- Kim sərbəst buraxa bilər: Yalnız sahibi mutex-i sərbəst buraxa bilər, hər hansı iş parçacığı semaforu sərbəst buraxa bilər.
#include <mutex> // std::mutex üçün
#include <semaphore> // std::counting_semaphore üçün
std::mutex mtx; // Resursu qorumaq üçün mutex
void critical_section() {
mtx.lock(); // Mutex-i əldə et
// Paylaşılan resursa giriş
mtx.unlock(); // Mutex-i sərbəst burax
}
// 5 resurs üçün girişin idarə olunması üçün semafor
std::counting_semaphore<5> sem(5);
void access_resource() {
sem.acquire(); // Resursu əldə et (sayğacı azaldır)
// Resursu istifadə et
sem.release(); // Resursu sərbəst burax (sayğacı artır)
}
Cədvəl şəklində müqayisə:
| Xüsusiyyət | Mutex | Semafor |
|---|---|---|
| Növ | Sinxronizasiya obyekti (ikili semafor) | Sinxronizasiya obyekti (sayğac) |
| Dəyər | 0 (dolu), 1 (boş) | Mənfi olmayan ədəd |
| Məqsəd | Kritik bölmələrin qorunması, qarşılıqlı istisna | Məhdud resurslara girişin idarə olunması |
| Mülkiyyət | Sahibi var (onu alan iş parçacığı) | Aydın mülkiyyət anlayışı yoxdur |
| Kim sərbəst buraxa bilər | Yalnız sahibi | Hər hansı iş parçacığı |