gpt4 book ai didi

scala - 如何在 Scala 中创建非阻塞方法?

转载 作者:行者123 更新时间:2023-12-02 23:42:33 25 4
gpt4 key购买 nike

在 Scala 中创建非阻塞方法的好方法是什么?我能想到的一种方法是创建一个线程/参与者,该方法只是向线程发送消息并返回。有没有更好的方法来创建非阻塞方法?

最佳答案

使用 scala.actors.Future:

import actors._

def asyncify[A, B](f: A => B): A => Future[B] = (a => Futures.future(f(a)))

// normally blocks when called
def sleepFor(seconds: Int) = {
Thread.sleep(seconds * 1000)
seconds
}

val asyncSleepFor = asyncify(sleepFor)
val future = asyncSleepFor(5) // now it does NOT block
println("waiting...") // prints "waiting..." rightaway
println("future returns %d".format(future())) // prints "future returns 5" after 5 seconds

采用具有多个参数的函数的重载“asyncify”留作练习。

但是,需要注意的是异常处理。正在“异步”的函数必须通过捕获异常来自行处理所有异常。函数抛出的异常的行为未定义。

关于scala - 如何在 Scala 中创建非阻塞方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1379063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com