저는 스칼라에서 Futures로 많은 수의 (~ 100.000) http 요청 태스크를 생성합니다. 이 작업은 시간이 걸리기 때문에 글로벌 카운터를 증가시킴으로써 얼마나 많은 선물이 성공적으로 완료되었거나 실패했는지 추적 할 수 있기를 바랍니다. 그러나 경쟁 조건을 피하기를 원합니다. 스칼라에 원자 카운터를 만드는 옵션이 있습니까? 아니면 더 좋은 방법이 있습니까?완료된 미래를 추적하십시오
코드는 다음과 같습니다
val futures = for(i <- 0 until nSteps) yield future {
...
val content = blocking { ... http request ... }
process(content)
}
Await.result(Future.sequence(futures),2 hours)
"당신의 선물"이 실패 할 수 있다고 생각 했습니까? 짧은 응답 시간 내에 모든 답장을 다시 받으려면 어떻게해야할까요? 응답을 처리 (처리) 할 수있는 리소스가 있습니까? 그렇지 않다면, 당신의 선물은 그로 인해 시간 초과 될 수 있습니까? –
@SoumyaSimanta, 나는 많은 것이 실패했다고 생각하지 않는다. 실패 할 경우 서버가 응답하지 않았을 가능성이 큽니다. 나는 단지 진도를 추적하고 싶다. – Thijs
선물이 당신이 찾고있는 것이 아닐 수도 있습니다. 당신은 배우를 생각해 봤나? 그렇게하면 차단하지 않고도 할 수 있지만 동기화 문제를 해결할 수 있습니다. –