Junior — Middle
Чӣ гуна метавон мутобиқати навсозии тағирёро ҳангоми кор кардани якчанд корутин дар як вақт таъмин кард?
sobes.tech AI
Ҷавоб аз AI
Для обеспечения согласованного обновления переменной при одновременной работе нескольких корутин в Android (Kotlin) можно использовать механизмы синхронизации, такие как:
Mutexиз kotlinx.coroutines — позволяет блокировать критическую секцию кода, чтобы только одна корутина могла изменять переменную в момент времени.Atomicпеременные из пакетаjava.util.concurrent.atomic— обеспечивают атомарные операции без блокировок.
Пример с использованием Mutex:
import kotlinx.coroutines.*
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
val mutex = Mutex()
var sharedCounter = 0
suspend fun increment() {
mutex.withLock {
sharedCounter++
}
}
fun main() = runBlocking {
val jobs = List(1000) {
launch {
increment()
}
}
jobs.forEach { it.join() }
println("Counter = $sharedCounter")
}
Такой подход гарантирует, что значение sharedCounter будет корректно обновлено без гонок данных.