supongamos que tengo una función del sueño:Método Scala @suspendable en un futuro
def sleep(delay:Int) : Unit @suspendable = {
....
}
es posible tener un futuro función que crea una versión asíncrona de la función del sueño que puede ser esperado en forma sincrónica.
def future(targetFunc: (Int => Unit @suspendable)) : (Int => Future) = {
....
}
class Future {
def await : Unit @suspendable = {
....
}
}
usted debería ser capaz de hacer algo como esto: deben aparecer
reset {
val sleepAsync = future(sleep)
val future1 = sleepAsync(2000)
val future2 = sleepAsync(3000)
future1.await
future2.await
/* finishes after a delay of 3000 */
}
las dos llamadas a sleepAsync para volver de inmediato y las dos llamadas a futuro # aguardan debe aparecer bloquear. por supuesto, todos caen al final del restablecimiento y el código posterior es responsable de llamar a la continuación después de la demora.
de lo contrario, ¿existe un método alternativo para ejecutar dos funciones @suspendable en paralelo y esperar a que se completen?
que tienen una esencia compilar con un esqueleto de lo que quiero hacer: https://gist.github.com/1191381
escribí esto: https://gist.github.com/1191571 que parece funcionar, pero parece bastante complicado. Siento que me podría estar perdiendo una forma más simple de hacerlo. – benmmurphy
también encontró esto: http://days2011.scala-lang.org/node/138/288 que parece hacerlo mucho mejor. – benmmurphy
¿Tiene preferencia por la respuesta "ganadora"? Necesito dar el premio de recompensa. –