Junior — Middle
Da li je obavezno koristiti sinhronizaciju prilikom izvršavanja korutina pokrenutih u Main Dispatcher-u da bi se sigurno povećala zajednička promenljiva?
sobes.tech АИ
Одговор од АИ
Ako korutine pokreću u Main Dispatcher-u (tj. u glavnoj niti), obično nije potrebna sinhronizacija za povećanje zajedničke promenljive, jer se kod izvršava sekvencijalno u jednoj niti.
Međutim, ako promenljiva može biti menjana iz drugih niti ili dispatcher-a, tada je sinhronizacija neophodna za sprečavanje trkačkih uslova.
Primer sigurnog povećanja promenljive u Main Dispatcher-u:
var counter = 0
fun increment() {
// Pokreće se u Main Dispatcher-u, stoga sinhronizacija nije potrebna
counter++
}
Ako pristup promenljivoj dolazi iz različitih niti, preporučuje se korišćenje Mutex ili atomskih tipova.