[]怎么用C#的System.Threading类实现并行有关问题呢
[求助]如何用C#的System.Threading类实现并行问题呢?
各位好,小弟我现在刚接触并行程序设计的,处理一些大数据量的问题。看了一些参考资料很多都是在c/c++上实现的,但是我习惯在VS2005 C#编程,就查到相关System.Threading的东西,但还是不会怎样具体调用。
例如,我有一个问题(当然没这么简单,我只是想具体理解一下它的用法):
想用两个线程来计算1+2+3+。。。+100,线程A计算奇数项,线程B计算偶数项,然后将两个结果相加,输出。
请问应该怎样写呢?谢谢各位帮忙了。
------解决方案--------------------
还是给你写个demo吧:
各位好,小弟我现在刚接触并行程序设计的,处理一些大数据量的问题。看了一些参考资料很多都是在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/