[英]yielding data from multiple sources in parallel
我有一種情況,我想異步地從多個來源流式傳輸相同類型的數據。 數據結果應隨其輸入而消失。最簡單的方法是什么? 收益回報率受阻,所以這沒有做我想要的。 在下面的示例中,我希望源B的數據在源A的數據之前輸出。
List<string> GetComputerRecordsFromA(int computerId)
{
Thread.sleep(100);
return new List<Record> {"Record1","Record2","Record3"};
}
List<int> GetComputerRecordsFromB()
{
return new List<int> {"Record1","Record2","Record3"};
}
IEnumerable<List<int>> GetDataBlocks()
{
//How to yield out in the order data comes available??
var computerIds = new List<int> {1,3,99,4};
foreach(int id in computerIds)
{
yield return GetDataFromA();
yield return GetDataFromB();
}
}
您可以同時進行操作-使用BlockingCollection
和一些線程。 每個輸入一個線程,一個(可能是您的主線程)該線程屈服返回列表中的項。
請注意,您可能未到達列表的末尾-如果您的讀者的速度比作家快,那么即使作家以后會向列表中寫入更多數據,它也會認為到達列表的末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.