代码之家  ›  专栏  ›  技术社区  ›  Patrick

限制不等待的线程数[重复]

  •  -1
  • Patrick  · 技术社区  · 2 年前

    我有一个foreach循环,它将数据发送到GRPC API。我希望我的循环同时发送多个请求,但将请求的数量限制为例如10个。我当前的代码如下:

    foreach (var element in elements)
    {
         var x = new Thread(() =>
            SendOverGrpc(element));
         x.Start();
    }
    

    但有了这些代码,软件“立即”发送所有请求。如何将请求数量限制在例如10个?一旦我的10个请求中的一个完成,我想发送下一个。

    1 回复  |  直到 2 年前
        1
  •  1
  •   David Browne - Microsoft    2 年前

    最简单的方法是 Parallel.Foreach 例如

    Parallel.ForEach(elements, new ParallelOptions() { MaxDegreeOfParallelism = 10 }, element  =>
        {
          SendOverGrpc(element);
        });