簡體   English   中英

如何從多線程C#讀取文本文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM