我有類似下面的僞代碼代碼:異步編碼 - 等待所有的回報 - 性能
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);
}
}
我的問題是關於在上面的代碼中的等待(在while(計數器> 0)) 。這會是一個性能問題嗎?我知道我正在做的多個調用(到遠程Web服務)至少需要幾秒鐘的時間才能返回 - 我是不是應該在while循環中引入像Thread.Sleep()這樣的東西,以便我只檢查所有每季度返回一次左右?
我的直覺是,把線程睡覺到我的代碼有點氣味,但我只是不夠精通這種代碼說方式或其他。
專爲一些有趣的閱讀。當我花一點時間概述我是如何使用異步任務完成這些操作時,會發佈一個修正答案。非常感謝。 – Paddy