http 呼び出しの処理を担当する Akka アクターがいます。scala ディスパッチを使用して、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
}
安全ですか?2 つの呼び出しが同時に結果を返す場合、nbOfResults
変数に同時にアクセスできますか?
現時点では、アクターは多かれ少なかれスレッドと同等であると考えているため、コールバック関数は同時に実行されません。それが正しいか ?