Middle
GCD istifadə edərək çoxlu iş parçacığı ilə işləyərkən yarışların necə aradan qaldırılması olar?
sobes.tech Süni İntellekt
AI-dan cavab
GCD (Grand Central Dispatch) istifadə edərkən, çoxsaylı işlərdə yarış şəraitlərinin qarşısını almaq üçün ümumi resurslara girişin sinxronizasiyası istifadə olunur. Əsas yanaşmalar:
-
Seriyalı (serial) növbələrin istifadəsi: əgər bütün ümumi resursla işləmələr tək bir seriyalı növbədə həyata keçirilərsə, onlar ardıcıllıqla icra olunacaq və eyni vaxtda girişin qarşısı alınacaq.
-
Barriers (maneələr) istifadə edilməsi: barrier bloklar, əvvəlki bütün tapşırıqların tamamlanmasını təmin edir və barrier başladıqdan sonra növbəti tapşırıqlar başlayır.
Resursu qorumaq üçün seriyalı növbənin istifadəsi nümunəsi:
let serialQueue = DispatchQueue(label: "com.example.serialQueue")
var sharedResource = 0
func incrementResource() {
serialQueue.async {
sharedResource += 1
print("Resurs artırıldı \(sharedResource)")
}
}
Bu şəkildə, sharedResource ilə əməliyyatlar eyni vaxtda həyata keçmir və yarış şəraitlərinin qarşısı alınır.