Junior — Middle
Kas on kohustuslik kasutada sünkroniseerimist, kui käivitate Main Dispatcher'is käivitatud korutinaid, et turvaliselt suurendada ühise muutuja väärtust?
sobes.tech AI
Vastus AI-lt
Kui korutinid käivitatakse Main Dispatcheris (st. peamises voos), siis üldise muutuja suurendamiseks tavaliselt synchroniseerimine ei ole vajalik, kuna kood täidetakse järjestikuselt ühes voos.
Kuid, kui muutuja võib muutuda teistest voogudest või dispatcheritest, siis on vajalik synchroniseerimine andmete konkurentsi vältimiseks.
Näide turvalisest muutuja suurendamisest Main Dispatcheris:
var counter = 0
fun increment() {
// Käivitatakse Main Dispatcheris, seega synchroniseerimine ei ole vajalik
counter++
}
Kui juurdepääs muutujaile toimub erinevatest voogudest, on soovitatav kasutada Mutex või atomaalseid tüüpe.