Sobes.tech
Junior — Middle

Main Dispatcher-də başlatılan korutinlər icra edilərkən, ümumi dəyişəni təhlükəsiz şəkildə artırmaq üçün sinxronizasiyadan istifadə etmək məcburidir?

sobes.tech Süni İntellekt

AI-dan cavab

Əgər korutinlər Main Dispatcher-də (yəni əsas axında) işə salınırsa, ümumi dəyişənin artırılması üçün sinxronizasiya adətən lazım deyil, çünki kod tək bir axında ardıcıl şəkildə icra olunur.

Lakin, əgər dəyişən digər axınlar və ya dispatcherlər tərəfindən dəyişə bilərsə, onda yarış şəraitlərinin qarşısını almaq üçün sinxronizasiya vacibdir.

Main Dispatcher-də təhlükəsiz şəkildə dəyişəni artırma nümunəsi:

var counter = 0

fun increment() {
    // Main Dispatcher-də icra olunur, ona görə sinxronizasiya lazım deyil
    counter++
}

Əgər dəyişənə giriş müxtəlif axınlardan həyata keçirilirsə, Mutex və ya atomik tiplər istifadə etmək tövsiyə olunur.