假設我有一個睡眠功能:轉換斯卡拉@suspendable方法爲未來
def sleep(delay:Int) : Unit @suspendable = {
....
}
是有可能有一個功能,未來的創建可同步等待的睡眠功能的異步版本。
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應該出現馬上返回,並且兩次調用未來#伺機應該出現阻塞。當然,它們都會在復位結束時完全消失,並且之後的代碼負責在延遲之後調用延續。
否則是否存在一種替代方法來並行運行兩個@suspendable函數並等待它們完成?
我有什麼,我想要做的骨架的編譯要點:https://gist.github.com/1191381
我寫道:https://gist.github.com/1191571這似乎工作,但它似乎很複雜。我覺得我可能會錯過一個簡單的做法。 – benmmurphy
也發現這個:http://days2011.scala-lang.org/node/138/288這似乎做得更好。 – benmmurphy
你對「獲勝」答案有偏好嗎?我需要頒發賞金獎勵。 –