Sobes.tech
Junior — Middle

Çox ipli proqramlaşdırmada qarşılıqlı istisna və sinxron icra üsulları hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

Çox iş parçacığı proqramlaşdırmada, qarşılıqlı istisna və iş parçalarının sinxron icrasını idarə etmək üçün müxtəlif mexanizmlər istifadə olunur:

  • Mutex (qarşılıqlı istisna) — yalnız bir iş parçacığının müəyyən bir kod hissəsini icra etməsinə imkan verən obyekt, məlumatların yarışını qarşısını alır.

  • Semafor — eyni zamanda müəyyən bir kodu icra edən iş parçacığı sayını məhdudlaşdıran sayğac.

  • Dispatch Queues (iOS-də GCD növbələri) — tapşırıqların ardıcıl və ya paralel icrasını təşkil etməyə imkan verir. Ardıcıllıq növbəsi tapşırıqların bir-bir icra olunmasını təmin edir və sinxronizasiyanı təmin edir.

  • NSLock, NSRecursiveLock, NSCondition — Foundation-dan kilidlər və şərtlərin gözlənilməsi üçün sinflər.

  • OperationQueue və Operation — tapşırıqların asılılıqlarını və sinxronizasiyasını idarə etmək üçün daha yüksək səviyyəli mexanizmlər.

Sinxronizasiya üçün DispatchQueue istifadə nümunəsi:

let serialQueue = DispatchQueue(label: "com.example.serialQueue")

serialQueue.async {
    // Bu kod ardıcıl şəkildə icra olunacaq, eyni zamanda giriş olmadan
    print("Tapşırıq 1 icra olunur")
}

serialQueue.async {
    print("Tapşırıq 2 icra olunur")
}

Beləliklə, qarşılıqlı istisna üçün çox vaxt mutex və ya ardıcıl növbələr istifadə olunur, və sinxronizasiya üçün semaforlar, şərtlər və asılılıq növbələri seçilir.