2011-07-13

C#中简单的多线程调用

Posted in .NET at 10:41 Author:仲远

标签:

在许多时候,我们可能希望能够简单的使用多线程来完成一些任务。这些任务可以并行运行,并且不会有太多太复杂的交集。在.NET Framewrok 4中,提供了Parallel.For、Parallel.Foreach的功能,能够自动调用多线程处理一个集合中的元素。以下是一个简单的示例:

List<string> lines = GetLines(); //get the set of elements
Parallel.ForEach<string>(lines, line =>
{
string[] fields = line.Split(new char[] { ‘\t’ });
//Do something with the element: line
});

在上述代码中,lines是一个元素的集合,可以是list、数组等各种collection,Parallel.ForEach<string>表示对这个类型为string的集合中的每个元素进行处理,每个元素会赋值给变量line,然后在大括号{…}中队这个元素进行一些处理。

如果你的程序中,需要将一些结果保存到一个共用的list变量中,需要小心一般的Collections都不是thread-safe的。需要使用.Net 4.0 中System.Collections.Concurrent Namespace下的泛型。具体可以参见如下一篇文章:《平行運算 (一):Parallel.For、Parallel.Foreach 用法及技巧

本文可以自由转载,转载时请保留全文并注明出处:
转载自仲子说 [ http://www.wangzhongyuan.com/ ]
原文链接:

Leave a Comment

*
To prove you're a person (not a spam script), type the security text shown in the picture. Click here to regenerate some new text.
Click to hear an audio file of the anti-spam word