随笔分类 -  .NET:异步、多线程、任务和并行

摘要:1、概念 1.0 线程的和进程的关系以及优缺点 windows系统是一个多线程的操作系统。一个程序至少有一个进程,一个进程至少有一个线程。进程是线程的容器,一个C#客户端程序开始于一个单独的线程,CLR(公共语言运行库)为该进程创建了一个线程,该线程称为主线程。例如当我们创建一个C#控制台程序,程序 阅读全文
posted @ 2017-11-08 00:47 Cat Qi 阅读(8322) 评论(0) 推荐(2) 编辑
摘要:本篇概述: @FCL4.0中已经存在的线程模型,以及它们之间异同点; @多线程编程模型的选择。 1:异步、多线程、任务、并行的本质 这四个概念对应在CLR中的本质,本质都是多线程。 异步,简单的讲就是BeginInvoke、EndInvoke模式,它在CLR内部线程池进行管理; 多线程,体现在C#中 阅读全文
posted @ 2017-11-07 22:46 Cat Qi 阅读(1613) 评论(0) 推荐(0) 编辑
摘要:传送门:异步编程系列目录…… 环境:VS2012(尽管System.Threading.Tasks在.net4.0就引入,在.net4.5中为其增加了更丰富的API及性能提升,另外关键字”async”和”await”是在C#5.0引入的。vs2010打 Visual Studio Async CTP 阅读全文
posted @ 2016-08-05 16:33 Cat Qi 阅读(725) 评论(0) 推荐(0) 编辑
摘要:原文:http://www.cnblogs.com/jesse2013/p/async-and-await.html async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了。但是这也给我 阅读全文
posted @ 2016-08-05 11:05 Cat Qi 阅读(1146) 评论(2) 推荐(1) 编辑
摘要:c# lock关键字的本质是调用Monitor.Enter(object obj)并且在finally的时候调用Monitor.Exit(obj)在obj是不同数据类型的时候会出现不同的情况1.锁定类型 例如lock(typeof(int)) lock(typeof(ClassA)) // Cals... 阅读全文
posted @ 2015-11-04 15:40 Cat Qi 阅读(4676) 评论(0) 推荐(1) 编辑
摘要:原文:http://www.albahari.com/threading/part2.aspx文章来源:http://blog.gkarch.com/threading/part2.html1同步概要在第 1 部分:基础知识中,我们描述了如何在线程上启动任务、配置线程以及双向传递数据。同时也说明了局... 阅读全文
posted @ 2015-09-09 00:08 Cat Qi 阅读(748) 评论(0) 推荐(0) 编辑
摘要:原文:http://www.albahari.com/threading/文章来源:http://blog.gkarch.com/threading/part1.html1简介及概念C# 支持通过多线程并行执行代码,线程有其独立的执行路径,能够与其它线程同时执行。一个 C# 客户端程序(Consol... 阅读全文
posted @ 2015-09-09 00:02 Cat Qi 阅读(851) 评论(0) 推荐(0) 编辑
摘要:8天玩转并行开发 8天玩转并行开发——第一天 Parallel的使用 8天玩转并行开发——第二天 Task的使用 8天玩转并行开发——第三天 plinq的使用 8天玩转并行开发——第四天 同步机制(上) 8天玩转并行开发——第五天 同步机制(下) 8天玩转并行开发——第六天 异步编程模型 8天玩转并 阅读全文
posted @ 2015-03-04 15:34 Cat Qi 阅读(460) 评论(0) 推荐(1) 编辑
摘要:在上一讲介绍了使用lock来实现线程之间的同步。实际上,这个lock是C#的一个障眼法,在C#编译器编译lock语句时,将其编译成了调用Monitor类。先看看下面的C#源代码: Code highlighting produced by Actipro CodeHighlighter (freew... 阅读全文
posted @ 2015-02-13 11:02 Cat Qi 阅读(271) 评论(0) 推荐(0) 编辑
摘要:虽然线程可以在一定程度上提高程序运行的效率,但也会产生一些副作用。让我们先看看如下的代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->classIn... 阅读全文
posted @ 2015-02-13 11:00 Cat Qi 阅读(301) 评论(0) 推荐(0) 编辑
摘要:如果设计一个服务器程序,每当处理用户请求时,都开始一个线程,将会在一定程序上消耗服务器的资源。为此,一个最好的解决方法就是在服务器启动之前,事先创建一些线程对象,然后,当处理客户端请求时,就从这些建好的线程中获得线程对象,并处理请求。保存这些线程对象的结构就叫做线程池。 在C#中可以通过Syste... 阅读全文
posted @ 2015-02-12 15:54 Cat Qi 阅读(273) 评论(0) 推荐(0) 编辑
摘要:Monitor对象 1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁无法释放,所以需要在try{} catch(){}之后的finally{}... 阅读全文
posted @ 2015-02-12 10:40 Cat Qi 阅读(331) 评论(0) 推荐(0) 编辑
摘要:在前文中,介绍了.NET下的多种异步的形式,在WEB程序中,天生就是多线程的,因此使用异步应该更为谨慎。本文将着重展开ASP.NET中的异步。 【注意】本文中提到的异步指的是服务器端异步,而非客户端异步(Ajax)。 对于HTTP的请求响应模型,服务器无法主动通知或回调客户端,当客户端发起一个请求... 阅读全文
posted @ 2015-02-11 09:43 Cat Qi 阅读(528) 评论(0) 推荐(1) 编辑
摘要:在说到异步前,先来理一下几个容易混淆的概念,并行、多线程、异步。 并行,一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多个网络中。 多线程,一般指同一进程中多个线程(包含其数据结构、上下文与代码片段)协作运行。在多核计... 阅读全文
posted @ 2015-02-10 16:30 Cat Qi 阅读(1072) 评论(0) 推荐(0) 编辑
摘要:ThreadStart:ThreadStart这个委托定义为void ThreadStart(),也就是说,所执行的方法不能有参数。ThreadStart threadStart=new ThreadStart(Calculate);Thread thread=new Thread(threadSt... 阅读全文
posted @ 2015-02-09 11:21 Cat Qi 阅读(32607) 评论(0) 推荐(1) 编辑
摘要:一、 Thread类的基本用法通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。可以通过Thread类的的构造方法传递一个无参数,并且不返回值(返回void)的委托(ThreadStart),这个委托的定义如下:[ComVisibleAttrib... 阅读全文
posted @ 2015-01-27 11:30 Cat Qi 阅读(353) 评论(0) 推荐(0) 编辑
摘要:Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4开发语言:C#3.0IDE:Visual Studio 2008本系列教程主要包括如下内容:1. BeginInvoke和EndInvoke方法2. Thread类3.线程池4.线程同步基础... 阅读全文
posted @ 2015-01-07 11:06 Cat Qi 阅读(1782) 评论(3) 推荐(0) 编辑

点击右上角即可分享
微信分享提示