Sobes.tech
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.