并行Foreach和行动

Jam*_*ery 2 c# task-parallel-library

我正在学习使用并行编程和ForEach方法.是否可以传入一系列操作.

例如,假设我有3种不同的动作:

  • visitGoogle
  • VisitYahoo
  • VisitStackOverflow

我想创建一个动作列表(这可能吗?)并添加其中一个动作50次.因此该列表包含50个元素,每个元素都是上述操作之一.

现在,我想将此列表传递给Parallel.Foreach,将MaxDegree设置为x(例如,假设为10).所以基本上它将会访问10个站点.我有4个核心,所以我无法想象这是一个问题.

对不起,如果没有任何意义,我没有别的办法来解释我的意思.这是一种做我想做的事情的合适方式,还是有更好的(更规范的)方式?

Str*_*ior 7

这可能吗?

是.

有更好的(更规范的)方式吗?

没有我能想到的.这正是Parallel框架的设计目标.由于您正在创建Actions列表,因此您可能希望使用Parallel.Invoke:

List<Action> list = GetActions();
Parallel.Invoke(list.ToArray());
Run Code Online (Sandbox Code Playgroud)

除非你想测试各种并发数以找到这个特定目的的最佳数量,否则我只是让框架决定而不是在那里抛出任意数字(如10).该框架非常聪明.