C#多线程实例之Parallel.Invoke()

简介:

简介

如何让代码执行得更快,如何充分发挥多核CPU的性能,是程序员需要思考的问题. 本文通过简单易懂的实例,让大家快速了解C#多线程的基本方法.

参考文档:http://www.cnblogs.com/yunfeifei/p/3993401.html

实例

using System;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;

namespace parallelInvoke {

public class program {
    public static void Main(String[] args) {
        parallelInvokeMthod pi = new parallelInvokeMthod();
        pi.Method1();
        pi.Method2();
    }
}

class parallelInvokeMthod {
    private Stopwatch stopWatch = new Stopwatch();
    // Run1 taks 1s
    public void Run1() {
        Thread.Sleep(1000);
        Console.WriteLine("Run1 = 1s" );
    }
    // Run2 taks 3s`
    public void Run2() {
        Thread.Sleep(3000);
        Console.WriteLine("Run2 = 3s");
    }
    // Run1 and Run2 take 4s by using Parallel.Invoke()
    public void Method1() {
        stopWatch.Start();
        Parallel.Invoke(Run1,Run2);
        stopWatch.Stop();
        Console.WriteLine("Method1 total run time is " + stopWatch.ElapsedMilliseconds +" ms");
    }
    //Run1 and Run2 take 6s by using normall method
    public void Method2() {
        stopWatch.Restart();
        Run1();
        Run2();
        stopWatch.Stop();
        Console.WriteLine("Method2 total run time is " + stopWatch.ElapsedMilliseconds+" ms");
    }

}
}

执行结果

Run1 = 1s
Run2 = 3s
Method1 total run time is 3000 ms
Run1 = 1s
Run2 = 3s
Method2 total run time is 3999 ms

说明

  • 本例中, Run1执行1s, Run2执行3s, 采用Parallel.Invoke()方法,使之并行执行, 总共耗时3s.
  • 如果按照Method2()方法,顺序执行Run1和Run2,则总共需要4s.
目录
相关文章
|
4月前
|
数据采集 XML JavaScript
C# 中 ScrapySharp 的多线程下载策略
C# 中 ScrapySharp 的多线程下载策略
|
2月前
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
48 0
|
3月前
|
安全 数据库连接 API
C#一分钟浅谈:多线程编程入门
在现代软件开发中,多线程编程对于提升程序响应性和执行效率至关重要。本文从基础概念入手,详细探讨了C#中的多线程技术,包括线程创建、管理及常见问题的解决策略,如线程安全、死锁和资源泄露等,并通过具体示例帮助读者理解和应用这些技巧,适合初学者快速掌握C#多线程编程。
83 0
|
4月前
|
安全 C# 开发者
【C# 多线程编程陷阱揭秘】:小心!那些让你的程序瞬间崩溃的多线程数据同步异常问题,看完这篇你就能轻松应对!
【8月更文挑战第18天】多线程编程对现代软件开发至关重要,特别是在追求高性能和响应性方面。然而,它也带来了数据同步异常等挑战。本文通过一个简单的计数器示例展示了当多个线程无序地访问共享资源时可能出现的问题,并介绍了如何使用 `lock` 语句来确保线程安全。此外,还提到了其他同步工具如 `Monitor` 和 `Semaphore`,帮助开发者实现更高效的数据同步策略,以达到既保证数据一致性又维持良好性能的目标。
52 0
|
4月前
|
传感器 开发框架 JSON
聊聊 C# dynamic 类型,并分享一个将 dynamic 类型变量转为其它类型的技巧和实例
聊聊 C# dynamic 类型,并分享一个将 dynamic 类型变量转为其它类型的技巧和实例
194 0
|
5月前
|
文字识别 自然语言处理 C#
印刷文字识别使用问题之C#发票识别的代码实例在哪里可以查看
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
并行计算 算法 C#
C# Mandelbrot和Julia分形图像生成程序更新到2010-9-14版 支持多线程计算 多核处理器
此文档是一个关于分形图像生成器的介绍,作者分享了个人开发的M-J算法集成及色彩创新,包括源代码和历史版本。作者欢迎有兴趣的读者留言交流,并提供了邮箱(delacroix_xu@sina.com)以分享资源。文中还展示了程序的发展历程,如增加了真彩色效果、圈选放大、历史记录等功能,并分享了几幅精美的分形图像。此外,还提到了程序的新特性,如导入ini文件批量输出图像和更新一批图片的功能。文档末尾附有多张程序生成的高分辨率分形图像示例。
|
6月前
|
大数据 C#
C#实现多线程的几种方式
C#实现多线程的几种方式
|
6月前
|
C#
C#||委托和事件的实例
C#||委托和事件的实例