gpt4 book ai didi

scala - 发挥光滑和异步 - 这是一个竞争条件吗?

转载 作者:行者123 更新时间:2023-12-01 22:54:53 25 4
gpt4 key购买 nike

阅读Play-Slick DBAction code ,我认为这段代码可能包含竞争条件:

object DBAction{
// snip

def apply(r: (RequestWithDbSession) => Result)(implicit app:Application) = {
Action { implicit request =>
AsyncResult {
DB.withSession{ s:scala.slick.session.Session =>
Future(r( RequestWithDbSession(request,s) ))(executionContext)
}
}
}
}

函数r在未来某个时间运行,在withSession返回Future[Result]并调用session.close()之后。此代码中是否存在竞争条件?

最佳答案

我不确定这是否称为竞争条件。然而对我来说,你似乎认为这里出了问题是正确的。当将来执行代码时, session 可能不再有效。

最好反转执行并从将来请求数据库 session :

Async {
Future {
DB.withSession{ s:scala.slick.session.Session =>
r( RequestWithDbSession(request, s) )
}
}
}

关于scala - 发挥光滑和异步 - 这是一个竞争条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18579684/

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