Ç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.