나는 다음과 같은 의사 코드와 유사한 코드가 있습니다비동기 코딩 - 모든 반환을 기다리고 - 성능
static int counter;
function GetCalculations()
{
for (x service calls)
{
service.BeginCalc(MyCallback);
Interlocked.Increment(counter);
}
while(counter > 0)
{
//Wait for all results to return
}
return;
}
static function MyCallback()
{
try
{
... process results
}
finally
{
Interlocked.Decrement(counter);
}
}
내 질문은 위의 코드에있는 대기의 관계에있다합니다 (동안 (카운터> 0)) . 이것이 성능 문제일까요? 나는 (원격 웹 서비스에) 다중 호출이 적어도 몇 초가 걸리는 것을 알고있다. while 루프에서 Thread.Sleep()과 같은 것을 도입하는 것이 더 좋을 것이므로 모든 것을 확인하고있다. 4 분의 1 초마다 돌아 왔습니까?
나의 본능적 인 본능은 코드를 잠그는 것이 약간의 냄새가 난다는 것이지만, 나는 이런 식의 코드를 잘 이해하지 못한다.
재미있는 독서 용으로 제작되었습니다. 비동기 작업을 사용하여 어떻게 수행했는지에 대해 간략하게 설명 할 때 답을 게시 할 것입니다. 매우 감사합니다. – Paddy