giả sử tôi có một chức năng ngủ:Chuyển đổi Scala @suspendable Phương pháp vào một tương lai
def sleep(delay:Int) : Unit @suspendable = {
....
}
là nó có thể có một chức năng tương lai mà tạo ra một phiên bản async của hàm ngủ có thể được chờ đợi trên cách đồng bộ.
def future(targetFunc: (Int => Unit @suspendable)) : (Int => Future) = {
....
}
class Future {
def await : Unit @suspendable = {
....
}
}
bạn sẽ có thể làm điều gì đó như thế này:
reset {
val sleepAsync = future(sleep)
val future1 = sleepAsync(2000)
val future2 = sleepAsync(3000)
future1.await
future2.await
/* finishes after a delay of 3000 */
}
hai cuộc gọi đến sleepAsync sẽ xuất hiện trở lại ngay lập tức và cả hai cuộc gọi đến trong tương lai # chờ đợi sẽ xuất hiện để ngăn chặn. tất nhiên họ đều thực sự rơi vào cuối của thiết lập lại và mã sau khi chịu trách nhiệm gọi sự tiếp tục sau khi sự chậm trễ.
nếu không có phương pháp thay thế nào để chạy hai hàm @suspendable song song và chờ cho cả hai hàm hoàn thành?
Tôi có một ý chính compilable với một bộ xương của những gì tôi muốn làm: https://gist.github.com/1191381
tôi đã viết: https://gist.github.com/1191571 có vẻ như hoạt động nhưng có vẻ khá phức tạp. tôi cảm thấy như tôi có thể thiếu một cách đơn giản hơn để làm điều đó. – benmmurphy
cũng tìm thấy điều này: http://days2011.scala-lang.org/node/138/288 mà dường như làm điều đó độc đáo hơn nhiều. – benmmurphy
Bạn có ưu tiên cho câu trả lời "thắng" không? Tôi cần đưa ra giải thưởng tiền thưởng. –