首页 > 技术文章 > 一个简单示例看懂.Net 并行编程

icoolno1 2017-05-27 15:32 原文

此示例尽量以最简洁的代码演示并行处理的功能,此示例代码中分别用单线程和多线程分别执行5次耗时1秒的操作。打印出执行过程及耗时。

以下为示例代码,.net framework要求4.0以上。

using System;
using System.Collections.Generic;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace ParallelDemo
{

    class Program
    {
        static void Main(string[] args)
        {
            // First do the sequential version.
            Console.WriteLine("Executing sequential loop...");
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();

//单线程执行
for (int i = 0; i < 5; i++) { TestMethod(); } stopwatch.Stop(); Console.WriteLine("Sequential loop time in milliseconds: {0}", stopwatch.ElapsedMilliseconds); // Reset timer and results matrix. stopwatch.Reset(); Console.WriteLine("Executing parallel loop..."); stopwatch.Start();
//多线程执行 Parallel.For(
0, 5, i => TestMethod()); stopwatch.Stop(); Console.WriteLine("Parallel loop time in milliseconds: {0}", stopwatch.ElapsedMilliseconds); // Keep the console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); } static void TestMethod() { var tid = Thread.CurrentThread.ManagedThreadId; Console.WriteLine("Thread {0} start", tid); Thread.Sleep(1000); Console.WriteLine("Thread {0} end", tid); } } }

运行结果

Executing sequential loop...
Thread 9 start
Thread 9 end
Thread 9 start
Thread 9 end
Thread 9 start
Thread 9 end
Thread 9 start
Thread 9 end
Thread 9 start
Thread 9 end
Sequential loop time in milliseconds: 5004
Executing parallel loop...
Thread 9 start
Thread 10 start
Thread 11 start
Thread 12 start
Thread 13 start
Thread 9 end
Thread 10 end
Thread 11 end
Thread 12 end
Thread 13 end
Parallel loop time in milliseconds: 1024
Press any key to exit.

附:官方示例

 

推荐阅读