Junior — Middle
Je povinné použiť synchronizáciu pri vykonávaní korutín spustených v Main Dispatcheri na bezpečné zvýšenie spoločnej premennej?
sobes.tech AI
Odpoveď od AI
Ak korutiny sú spustené v Main Dispatcheri (t.j. v hlavnom vlákne), zvyčajne nie je potrebná synchronizácia na zvýšenie spoločnej premennej, pretože kód sa vykonáva sekvenčne v jednom vlákne.
Avšak, ak môže byť premennej menené z iných vlákien alebo dispatcherov, synchronizácia je nevyhnutná na prevenciu závodov dát.
Príklad bezpečného zvýšenia premennej v Main Dispatcheri:
var counter = 0
fun increment() {
// Beží v Main Dispatcheri, preto nie je potrebná synchronizácia
counter++
}
Ak prístup k premennej pochádza z rôznych vlákien, odporúča sa použiť Mutex alebo atómové typy.