Я пытался реализовать систему wait
& notifyAll
, как я делал в Java.Основная идея состоит в том, чтобы вызвать несколько функций для ожидания сигнала и продолжения их выполнения.
Следующий тестовый сценарий оборачивает предполагаемую реализацию:
@Test
fun blocking_multiple_shouldReturnOne() {
var valueOne : Int? = null
var valueTwo : Int? = null
var valueThree : Int? = null
var valueFour : Int? = null
val threadManager = ThreadManager()
threadManager.startBlocking {
valueOne = 1
}
threadManager.startBlocking {
valueTwo = 1
}
threadManager.startBlocking {
valueThree = 1
}
threadManager.startBlocking {
valueFour = 1
}
threadManager.startAndNotifyAll {
valueOne = 0
valueTwo = 0
valueThree = 0
valueFour = 0
}
assertTrue("startBlocking wasn't executed right after notify all", valueOne == 1)
assertTrue("startBlocking wasn't executed right after notify all", valueTwo == 1)
assertTrue("startBlocking wasn't executed right after notify all", valueThree == 1)
assertTrue("startBlocking wasn't executed right after notify all", valueFour == 1)
}
Есть ли способ сделать это, используяСопрограммы в Котлине?Пока что не везет исследовать.
Заранее спасибо.