😡 Перестаньте постоянно переключать потоки! (EN,7м)
Разработчика бомбануло что часто в коде видит постоянные переключения поток в корутинах! Написал статью, чтобы рассказать о том что этого делать не надо! Не буду рекомендовать, а ТРЕБУЮ к прочтению всеми разработчиками!
#kotlin #coroutines #concurrency
Разработчика бомбануло что часто в коде видит постоянные переключения поток в корутинах! Написал статью, чтобы рассказать о том что этого делать не надо! Не буду рекомендовать, а ТРЕБУЮ к прочтению всеми разработчиками!
#kotlin #coroutines #concurrency
🔥27👍11
Litmus testing - это методика, схожая со стресс тестированием, но нацеленная на проверку работы многопоточных программ. Методика - запуск программы сотни или даже тысячи раз для поиска редких багов.
🐱 LitmusKt - решение от JetBrains Research, которое позволяет проверить работу многопоточных Kotlin приложений. Сейчас можно запускать Kotlin/JVM и Kotlin/Native на всех платформах.
// Пример теста
class StoreBufferingState(
var x: Int = 0,
var y: Int = 0,
var r1: Int = 0,
var r2: Int = 0,
)
val StoreBuffering = litmusTest(::StoreBufferingState) {
thread {
x = 1
r1 = y
}
thread {
y = 1
r2 = x
}
outcome {
r1 to r2
}
spec {
accept(listOf(0 to 1, 1 to 0, 1 to 1))
interesting(listOf(0 to 0))
}
reset {
x = 0
y = 0
r1 = 0
r2 = 0
}
}
# Результат выполнения теста
outcome | type | count | frequency
---------------------------------------------
[1, 0] | ACCEPTED | 6298680 | 48.451%
[0, 1] | ACCEPTED | 6291034 | 48.392%
[0, 0] | INTERESTING | 405062 | 3.1158%
[1, 1] | ACCEPTED | 5224 | 0.0401%
Жду примеров как использовать это с кодом из корутин
#kotlin #concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30❤2