日期:2014-05-17  浏览次数:20857 次

[求助]如何用C#的System.Threading类实现并行问题呢?
各位好,小弟我现在刚接触并行程序设计的,处理一些大数据量的问题。看了一些参考资料很多都是在c/c++上实现的,但是我习惯在VS2005 C#编程,就查到相关System.Threading的东西,但还是不会怎样具体调用。

例如,我有一个问题(当然没这么简单,我只是想具体理解一下它的用法):
想用两个线程来计算1+2+3+。。。+100,线程A计算奇数项,线程B计算偶数项,然后将两个结果相加,输出。

请问应该怎样写呢?谢谢各位帮忙了。

------解决方案--------------------
还是给你写个demo吧:
C# code
using System;
using System.Threading;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var sum = 0;
            var eh = new ManualResetEvent(false);
            ThreadPool.QueueUserWorkItem(h =>
            {
                for (var i = 2; i <= 100; i += 2)
                    sum += i;
                eh.Set();
            });
            var sum2 = 0;
            for (var i = 1; i <= 100; i += 2)
                sum2 += i;
            eh.WaitOne();
            Console.WriteLine("计算结果分别为{0}、{1},总计为{2}。", sum2, sum, sum2 + sum);
            Console.ReadKey();
        }


    }
}

------解决方案--------------------
http://www.cnblogs.com/xugang/archive/2008/04/06/1138856.html
------解决方案--------------------
如果有可能升级下.net版本吧
可以看看下面的文章或者blog:
Parallel Programming in the .NET Framework
http://msdn.microsoft.com/en-us/library/dd460693(v=vs.100).aspx

Parallel Computing
http://msdn.microsoft.com/en-us/vstudio/bb964701.aspx


Parallel Programming with .NET
http://blogs.msdn.com/b/pfxteam/