zoukankan      html  css  js  c++  java
  • 一个简单示例看懂.Net 并行编程

    此示例尽量以最简洁的代码演示并行处理的功能,此示例代码中分别用单线程和多线程分别执行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.
    

    附:官方示例

  • 相关阅读:
    计算机综合面试题总结
    MySQL入门很简单: 13 数据备份和还原
    MySQL入门很简单: 12 MYSQL 用户管理
    MySQL入门很简单: 11 mysql函数
    页面即使加过了移除监听事件,但是到新页面后事件任然存在
    git命令大全
    document.documentElement.scrollTop指定位置失效解决办法
    vue做商品选择如何保持样式
    vue父组件向子组件传对象,不实时更新解决
    vue 遮罩层阻止默认滚动事件
  • 原文地址:https://www.cnblogs.com/icoolno1/p/6913100.html
Copyright © 2011-2022 走看看