Ответ
Для синхронизации изменений переменной между корутинами можно использовать:
Mutex– блокирует доступ к ресурсу для других корутинAtomic– для простых типов (Int, Long)withContext(Dispatchers.Default)– если операции CPU-bound
Пример с Mutex:
val mutex = Mutex()
var sharedValue = 0
// В корутинах:
mutex.withLock {
sharedValue++ // безопасное изменение
}
Для атомарных операций лучше использовать AtomicInteger:
val atomicValue = AtomicInteger(0)
// В корутинах:
atomicValue.incrementAndGet() // потокобезопасно
Выбор зависит от сценария: Mutex для сложных операций, Atomic для простых инкрементов.