[英]How to read a text file from multiple thread c#
我有一個使用多個線程(300)來查詢API的程序。 當前,它表現為爬蟲,每個線程根據剛處理的API調用的結果和一個隨機參數來確定其下一個Web API調用。
我建立了一個參數列表,該列表將從等式中剔除“隨機參數”,並通過消除由於使用該隨機參數而導致的冗余API調用來提高效率。
該列表采用大約800萬行的文本文件的形式。
理想情況下,我想在主線程中擁有一個流讀取器對象,該對象將是線程安全的,並且所有其他(300)個線程將在處理完最后一個直到用盡時都將從文本文件中“獲取行”文件。
我對應該看的東西有些迷茫,任何建議和答案將不勝感激!
第一種方式
public static string GetLineThreadSafe(this StreamReader sr)
{
lock (sr)
{
return sr.EndOfStream ? null : sr.ReadLine();
}
}
第二種方式
public static IEnumerable<string> GetEnumirator(this StreamReader sr)
{
while (!sr.EndOfStream)
{
yield return sr.ReadLine();
}
}
public static void ProcessParalel(this StreamReader sr, Action<string> action, int threadsCount)
{
ParallelOptions po = new ParallelOptions();
po.MaxDegreeOfParallelism = threadsCount;
Parallel.ForEach(sr.GetEnumirator(), po, action);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.