我需要评估大约 10 万个结果,然后保存在一个列表中,因为我会在图表上表示它。
但是只使用一个线程太长了,我决定使用多线程,但我对此一无所知。
这是我在单线程中使用的函数:
for(int i=min;i<max;i++)
{
list.Add(evaluate(expression, i));
}
我想做类似的事情,但有多个线程。
我需要评估大约 10 万个结果,然后保存在一个列表中,因为我会在图表上表示它。
但是只使用一个线程太长了,我决定使用多线程,但我对此一无所知。
这是我在单线程中使用的函数:
for(int i=min;i<max;i++)
{
list.Add(evaluate(expression, i));
}
我想做类似的事情,但有多个线程。
也许这样的事情可以帮助你。
var max = 100;
var min = 20;
var list = new MyResult[max - min];
Parallel.For(min, max, i =>
{
list[i - min] = evaluate(expression, i);
});
请注意,无论evaluate
做什么都需要是线程安全的。
您可能想查看 .NET Framework 4中的任务并行库 (TPL) 和并行编程
TPL 的目的是通过简化向应用程序添加并行性和并发性的过程来提高开发人员的工作效率。TPL 动态扩展并发程度,以最有效地使用所有可用的处理器。此外,TPL 处理工作的划分、线程池上的线程调度、取消支持、状态管理和其他低级细节。通过使用 TPL,您可以最大限度地提高代码的性能,同时专注于您的程序旨在完成的工作。