我有一个负责处理 http 调用的 Akka 演员。我使用 scala dispatch 通过 API 发送多个 HTTP 请求:
urls.foreach { u
val service = url(u)
val promise = Http(service OK as.String).either
for(p <- promise)
{
p match
{
case Left(error) =>
faultHandler(error)
case Right(result) =>
resultHandler(result)
}
}
在resultHandler
函数中,我增加一个实例变量nbOfResults
并与我完成的调用次数进行比较。
def resultHandler(result:String)
{
this.nbOfResults++
...
if(nbOfResults == nbOfCalls)
// Do something
}
安全吗?nbOfResults
如果两个调用同时返回结果,是否可以同时访问该变量?
目前,我认为actor或多或少相当于一个线程,因此回调函数不会同时执行。这是正确的吗 ?