предположим, у меня есть функция сна:
def sleep(delay:Int) : Unit @suspendable = {
....
}
возможно ли иметь функцию future, которая создает асинхронную версию функции сна, которую можно ожидать синхронно.
def future(targetFunc: (Int => Unit @suspendable)) : (Int => Future) = {
....
}
class Future {
def await : Unit @suspendable = {
....
}
}
вы должны быть в состоянии сделать что-то вроде этого:
reset {
val sleepAsync = future(sleep)
val future1 = sleepAsync(2000)
val future2 = sleepAsync(3000)
future1.await
future2.await
/* finishes after a delay of 3000 */
}
два вызова sleepAsync должны сразу же вернуться, и два вызова Future # await должны блокироваться.конечно, все они действительно сбрасываются в конце сброса, и код после отвечает за вызов продолжения после задержки.
в противном случае есть ли альтернативный метод для параллельного запуска двух функций @suspendable и ожидания завершения обеих из них?
У меня есть компилируемая сущность со скелетом того, что я хочу сделать:https://gist.github.com/1191381