使用Parallel.ForEach实现并行性而不破坏程序的顺序

时间:2016-12-13 18:48:06

标签: c# asynchronous parallel-processing

我试图让我的C#应用​​程序尽可能快地运行。

我无权访问应用程序的源代码,但允许使用C#对其进行扩展,以便我这样做。我不知道这是否有所不同。

此外,这必须每秒运行十次以上。性能对我来说非常重要,所以我决定使用Parallel.ForEach()

如何定义订单(我不是在谈论数组的原始订单)所以事情不会变得毛茸茸?

这是我的代码:

string[] MyThings = {}; // There are 300 names in this array.

System.Threading.Tasks.Parallel.ForEach(MyThings, Thing => {
  var LastStatus = AppLib.FetchNode(Thing); 
  // First step. AppLib.FetchNode() sends my Node.js server a request,  
  // Node.js accesses MySQL and returns a response.

  // Second step. I access application specific data here using LastStatus value, 
  // but it shouldn't run before the first step is finished.

  var SendStatus = AppLib.SendNode(data1, data2, data3);
  // Third and last step. SendNode() sends some data to my Node.js server, 
  // but it shouldn't run before the second step is finished.
});

0 个答案:

没有答案