C#多线程实例之Parallel.Invoke()
简介
如何让代码执行得更快,如何充分发挥多核CPU的性能,是程序员需要思考的问题. 本文通过简单易懂的实例,让大家快速了解C#多线程的基本方法.
实例
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.
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源软件的坏味道
前言 开源软件的世界,我们一直带着一颗敬畏之心来使用与学习,我们总觉得他们高高在上、他们完美无缺。但金无足赤,强如JDK、Spring也同样有这样或那样的问题。他们也并非那么遥不可及,我们也未必只配仰望,这里我们列举开源软件的那些“bad smell”,前车之鉴、后车之覆,开源软件也同样不完美。站在巨人肩膀上看到巨人的不完美,激励着我们往更成功的巨人之路迈进 ? JDK篇 Handler#setFormatter 代码片段出自java.util.logging.Handler#setFormatter,作者为了不让空指针异常下传,提前做一次检查,这本无可厚非,但采用这种方式来检查,或许并不是个优雅的方案。 "Comments Do Not Make Up for Bad Code"--- Robert C.Martin 《Clean Cod
- 下一篇
python format 格式化 输出
从格式化表达式到方法 format:格式化方法。因为它知识上是使用了str的__format__方法。 基本的操作 所谓格式化方法,就是可以先建立一个输出字符串的模板,然后用format来填充模板的内容。 >>> #先做一个字符串模板 >>> template = "My name is {0}. My website is {1}. I am writing {2}." >>> #用format依次对应模板中的序号内容 >>> template.format("hiekay","hiekay.github.io","python") 'My name is hiekay. My website is hiekay.github.io. I am writing python.' 当然,上面的操作如果你要这样做,也是可以的: >>> "My name is {0}. My website is {1}. I am writing {2}.".format("hiekay","hiekay.gith...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度