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条评论来说两句吧...