Преобразование Scala @suspendable Метод в будущее

Предположим, у меня есть функция сна:

def sleep(delay:Int) : Unit @suspendable = {
  ....
}

Возможно ли иметь функциональное будущее, которое создает async функции сна, которые могут быть ожидаться синхронно.

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 */
}

Две вызовы на бежасинч должны, казаться, возвращаться сразу, а две вызовы в будущее # ждут, должны отображаться для блокировки. Конечно, они все действительно падают с конца сброса и код после того, как отвечает за вызов продолжения после задержки.

В противном случае есть альтернативный метод для проведения двух функций @suspendable параллельно и ждет их, чтобы они были выполнены?

У меня есть коммутилизирующий гид с скелетом того, что я хочу сделать: HTTPS: / /gist.github.com/1191381

12
задан benmmurphy 3 September 2011 в 16:12
поделиться