Вполне.
Если производительность не важна - то да Но вообще это suspend-функция
А там нет тонкостей на то, какой скоуп применяется?
Ну, где надо я в runBlocking оборачиваю
Ну а как еще?)
Сделать нормальный суспенд доступ
Не если код еще обычный, блокирующий...
Взять atomicfu, взять атомики из джавы и заглушки на других платформах, или написать что-нибудь такое: while (!mutex.tryLock()) { } counter++ mutex.unlock()
Ну вот это похоже на страшный костыль. Лучше уж сделать expect/actual и на жаве засинхронизировать
Ну если так делать, то в джаве нормальный AtomicInteger есть
atomicfu его не использует?
Вы ж знаете, что под runBlocking однопоточный планировщик, да?
Его и использует. Плюс какая-то реализация под другие платформы (заглушка на JS, хз что на нейтиве).
Это как то обойти можно?
atomicfu для JVM либо в VarHandle, либо в AtomicXxxFieldUpdater превращается в js тоже во что-то в native используются вроде обёртки надо атомиками из native так что зачем писать своё, если уже есть написанное :) да и в stately ещё вроде есть свои atomic
Не обязательно. Можно делать runBlocking(Dispatchers.Default)
ой, это ответ сюда больше
Обсуждают сегодня