Sobes.tech
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ığı