我无法决定在多线程中使用的最佳方法是什么

时间:2019-05-11 11:49:17

标签: c# multithreading task task-parallel-library parallel.foreach

我当前正在处理一个需要使用多线程的项目。

我正在尝试使用TPL,因为根据我的研究,最好使用线程池。

我的代码来自foreach循环,其中每个项目都需要使用不同的线程运行并并行执行。

线程将调用来自不同库的方法。

我的问题
效率更高的方法是:

  • 创建任务以创建线程或
  • 创建parallel.foreach以使方法在不同的线程中运行。

我的项目还包括以任何顺序获取结果,创建并写入文件以及在我尝试使用聚合异常的线程内捕获异常。

有什么想法最能解决这个问题?

就像这样,我在列表中存储了文件名。这些文件应运行到不同的线程中进行处理。每个文件都有c ++代码。我实际上是使用第三方库来完成该项目,例如使用moonsharp在c#和c ++之间进行通信。 我将运行c ++脚本,并使用c#项目中的某些功能来计算来自脚本的输入。之后,c#将结果返回给c ++。现在,c ++具有结果,并且c#可以访问它。我将使用c#项目将结果写在记事本中。所以基本上我有一个处理C ++脚本的C#项目。 流程是这样的:

foreach(string FileName in ListOfC++Files)
{
//Do method
}

我想到的是:

Parallel.foreach( ListOfC++Files, filenames()=>
{
//Do method
});

或者只是做任务

foreach(string FileName in ListOfC++Files)
{
Task.Run(()=>
{
// do Method
});
}

在方法中 执行设置目录,设置文件名,运行其他库中的方法来处理c ++和c#之间的通信

类似的东西。 谢谢

0 个答案:

没有答案