异步编程系列
异步编程系列
sinolover
完成项目,就要软硬兼施
展开
-
【转】5.2高性能IO模型浅析
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(NewIO)库。(3)IO多路复用(IOMultiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的ep...原创 2020-12-14 10:45:59 · 80 阅读 · 0 评论 -
【转】4.2使用jQuery.form插件,实现完美的表单异步提交
传送门:异步编程系列目录……示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar抓住6月份的尾巴,今天的主题是今天我想介绍的是一款jQuery的插件:Jquery.form.js官网。通过该插件,我们可以非常简单的实现表单的异步提交,并实现文件上传、进度条显示等等。现在我们从一个ASP.NET同步表单提交开始,然后再将其转化为异步的表单提交。我写了3种表单提交示例,并简单分析了各种方式的利弊。当然主题还是使用jQ...原创 2020-12-12 22:51:42 · 347 阅读 · 0 评论 -
【转】4.1触碰jQuery:AJAX异步详解
传送门:异步编程系列目录……示例源码:触碰jQuery:AJAX异步详解.rarAJAX全称Asynchronous JavaScript and XML(异步的JavaScript和XML)。它并非一种新的技术,而是以下几种原有技术的结合体。1)使用CSS和XHTML来表示。2)使用DOM模型来交互和动态显示。3)使用XMLHttpRequest来和服务器进行异步通信。4)使用javascript来绑定和调用。通过AJAX异步技术,可以在客户...原创 2020-12-12 22:51:12 · 353 阅读 · 0 评论 -
【转】3.7(译)构建Async同步基元,Part 7 AsyncReaderWriterLock
传送门:异步编程系列目录……最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习惯,那么这系列翻译就是给“并行任务”封装同步基元对象。翻译资源来源《(译)关于Async与Await的FAQ》1.构建Async同步基元,Part 1 AsyncManualResetEvent2.构建Async同步基元,...原创 2020-12-12 22:49:16 · 155 阅读 · 0 评论 -
【转】3.6(译)构建Async同步基元,Part 6 AsyncLock
传送门:异步编程系列目录……最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习惯,那么这系列翻译就是给“并行任务”封装同步基元对象。翻译资源来源《(译)关于Async与Await的FAQ》1.构建Async同步基元,Part 1 AsyncManualResetEvent2.构建Async同步基元,...原创 2020-12-12 22:48:38 · 196 阅读 · 0 评论 -
【转】3.5(译)构建Async同步基元,Part 5 AsyncSemaphore
传送门:异步编程系列目录……最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习惯,那么这系列翻译就是给“并行任务”封装同步基元对象。翻译资源来源《(译)关于Async与Await的FAQ》1.构建Async同步基元,Part 1 AsyncManualResetEvent2.构建Async同步基元,...原创 2020-12-12 22:48:24 · 223 阅读 · 0 评论 -
【转】3.4(译)构建Async同步基元,Part 4 AsyncBarrier
传送门:异步编程系列目录……最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习惯,那么这系列翻译就是给“并行任务”封装同步基元对象。翻译资源来源《(译)关于Async与Await的FAQ》1.构建Async同步基元,Part 1 AsyncManualResetEvent2.构建Async同步基元,...原创 2020-12-12 22:48:12 · 178 阅读 · 0 评论 -
【转】3.3(译)构建Async同步基元,Part 3 AsyncCountdownEvent
传送门:异步编程系列目录……最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习惯,那么这系列翻译就是给“并行任务”封装同步基元对象。翻译资源来源《(译)关于Async与Await的FAQ》1.构建Async同步基元,Part 1 AsyncManualResetEvent2.构建Async同步基元,...原创 2020-12-12 22:47:56 · 163 阅读 · 0 评论 -
【转】3.2(译)构建Async同步基元,Part 2 AsyncAutoResetEvent
传送门:异步编程系列目录……最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习惯,那么这系列翻译就是给“并行任务”封装同步基元对象。翻译资源来源《(译)关于Async与Await的FAQ》1.构建Async同步基元,Part 1 AsyncManualResetEvent2.构建Async同步基元,...原创 2020-12-12 22:47:44 · 182 阅读 · 0 评论 -
【转】3.1(译)构建Async同步基元,Part 1 AsyncManualResetEvent
传送门:异步编程系列目录……最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习惯,那么这系列翻译就是给“并行任务”封装同步基元对象。翻译资源来源《(译)关于Async与Await的FAQ》1.构建Async同步基元,Part 1 AsyncManualResetEvent2.构建Async同步基元...原创 2020-12-12 22:47:34 · 184 阅读 · 0 评论 -
【转】2.3async中必须始终返回Task(@Ron.liang)
Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章目录前言 1. 异常的发生来得太突然 2. 问题所在 3. 问题的解决方案前言事情的起因是由于一段简单的数据库连接代码引起,这段代码从语法上看,是没有任何问题;但是就是莫名其妙的报错了,这段代码极其简单,就是打开数据库连接,读取一条记录,然后立即更新到数据库中。但是,惨痛的事实证明,老司机也是会翻车的。1. 异常的发生来得太突然1.1 引起不舒适的代码片段 [HttpPu.原创 2020-12-03 13:15:05 · 422 阅读 · 0 评论 -
【转】2.2[译]async/await中阻塞死锁
这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁。内容主要是从作者Stephen Cleary的两篇博文中翻译过来.原文1:Don'tBlock on Async Code原文2:why the AspNetSynchronizationContext was removed示例代码:async_await中阻塞死锁.rar一、async/await异步代码运行流程async/await是在.NE...原创 2020-12-02 11:27:54 · 602 阅读 · 0 评论 -
【转】2.1(译)关于async与await的FAQ
传送门:异步编程系列目录……环境:VS2012(尽管System.Threading.Tasks在.net4.0就引入,在.net4.5中为其增加了更丰富的API及性能提升,另外关键字”async”和”await”是在C#5.0引入的。vs2010打Visual Studio Async CTP for VS2010补丁可以引入关键字”async”和”await”的支持,但是得不到.net4.5新增API的支持) (CTP:Community Test Preview ...原创 2020-12-02 11:27:47 · 493 阅读 · 0 评论 -
【转】1.DThread、ThreadPool、Task、Parallel的基本用法、区别以及弊端
多线程的操作在程序中也是比较常见的,比如开启一个线程执行一些比较耗时的操作(IO操作),而主线程继续执行当前操作,不会造成主线程阻塞。线程又分为前台线程和后台线程,区别是:整个程序必须要运行完前台线程才会退出,而后台线程会在程序退出的时候结束掉。Thread默认创建的是前台线程,而ThreadPool和Task默认创建的是后台线程,Thread可以通过设置IsBackground 属性将线程设置为后台线程。static void Main(string[] args){ Threa.原创 2020-12-02 11:01:26 · 522 阅读 · 0 评论 -
【转】1.C Task.CompletedTask和Task.Result小记
在任何返回Task的方法中,如果可以在不进行异步的情况下计算结果,则最好避免使用Task.Run。例如,一个简短的计算函数,或者测试中返回了一个预先计算过的结果,则无需使用Task.Run。例如,定义了一个返回Task的接口方法,但是在实现中,并没有特别耗时的代码。 public interface IComputer { Task Do(); Task<string> DoString();}一般我们会这样实现。即使实现中代码...原创 2020-12-02 11:01:18 · 648 阅读 · 0 评论 -
【转】1.B(译).NET4.X并行任务Task需要释放吗?
传送门:异步编程系列目录……摘要:本博文解释在.NET 4.X中的Task使用完后为什么不应该调用Dispose()。并且说明.NET4.5对.NET4.0的Task对象进行的部分改进:减轻Task对WaitHandle对象的依赖,并且增强在释放了Task后对其成员的可访问性。我多次获得这样一个问题:“Task实现了IDisposable接口并且公开Dispose()方法,这是否意味着我们要对所有的任务进行释放吗?”概述1.这是我对...原创 2020-12-02 11:00:28 · 309 阅读 · 0 评论 -
【转】1.A(译).NET4.X 并行任务中Task.Start()的FAQ
传送门:异步编程系列目录……近期有不少人向我咨询关于Task的Start()方法。比如:何时使用及何时不使用Start()、Start()又做了些什么……我想在这里回答一些问题试图澄清和平息任何关于Start()方法是什么以及做了什么的误解。1.问题:我什么时候能使用Task的Start()方法?只有Task处于TaskStatus.Created状态时才能使用实例方法Start()。并且,只有在使用Task的公共构造函数构造的...原创 2020-12-02 11:00:23 · 382 阅读 · 0 评论 -
【转】1.9 Asp.Net Core 轻松学-多线程之取消令牌(
目录前言 1. 多线程请求合并数据源 2. 对长时间阻塞调用的异步取消令牌应用 3. CancellationToken 的链式反应 4. CancellationToken 令牌取消的三种方式 结束语 示例代码下载前言 取消令牌(CancellationToken) 是 .Net Core 中的一项重要功能,正确并合理的使用 CancellationToken 可以让业务达到简化代码、提升服务性能的效果;当在业务开发中,需要对一些特定的应用场景进行深度干预的时候,Canc.原创 2020-12-02 11:00:17 · 332 阅读 · 0 评论 -
【转】1.8异步编程:.NET 4.5 基于任务的异步编程模型(TAP)
传送门:异步编程系列目录……最近我为大家陆续介绍了“IAsyncResult异步编程模型(APM)”和“基于事件的异步编程模式(EAP)”两种异步编程模型。在.NET4.0中Microsoft又为我们引入了新的异步编程模型“基于任务的异步编程模型(TAP)”,并且推荐我们在开发新的多线程应用程序中首选TAP,在.NET4.5中更是对TPL库进行了大量的优化与改进。那现在我先介绍下TAP具有哪些优势:1.目前版本(.NET4.X)的任务调度器(TaskSchedul...原创 2020-12-01 16:10:59 · 373 阅读 · 0 评论 -
【转】1.7异步编程:基于事件的异步编程模式(EAP)
传送门:异步编程系列目录……上一篇,我给大家介绍了“.NET1.0IAsyncResult异步编程模型(APM)”,通过Begin***开启操作并返回IAsyncResult对象,使用End***方法来结束操作,通过回调方法来做异步操作后其它事项。然而最大的问题是没有提供进度通知等功能及多线程间控件的访问。为克服这个问题(并解决其他一些问题),.NET2.0中引入了:基于事件的异步编程模式(EAP,Event-based Asynchronous Pattern)。通过事件、AsyncOper...原创 2020-12-01 16:05:51 · 340 阅读 · 0 评论 -
【转】1.6异步编程:IAsyncResult异步编程模型 (APM)
传送门:异步编程系列目录……大部分开发人员,在开发多线程应用程序时,都是使用ThreadPool的QueueUserWorkItem方法来发起一次简单的异步操作。然而,这个技术存在许多限制。最大的问题是没有一个内建的机制让你知道操作在什么时候完成,也没有一个机制在操作完成时获得一个返回值。为了克服这些限制(并解决其他一些问题),Microsoft引入了三种异步编程模式:1..NET1.0异步编程模型(APM),基于IAsyncResult接口实现。2....原创 2020-12-01 16:03:06 · 496 阅读 · 0 评论 -
【转】1.5异步编程:.NET4.X 数据并行
任务并行库(TPL)是.NET Framework 4的System.Threading和System.Threading.Tasks命名空间中的一组公共类型和API。TPL的目的在于简化向应用程序中添加并行性和并发性的过程,从而提高开发人员的工作效率。TPL会动态地按比例调节并发程度,以便最有效地使用所有可用的处理器。此外,TPL还处理工作分区、ThreadPool上的线程调度、取消支持、状态管理以及其他低级别的细节操作。通过使用TPL,您可以在将精力集中于程序要完成的工作,同时最大程度...原创 2020-12-01 15:57:00 · 299 阅读 · 0 评论 -
【转】1.4异步编程:轻量级线程同步基元对象
开始《异步编程:同步基元对象(下)》示例:异步编程:轻量级线程同步基元对象.rar在《异步编程:线程同步基元对象》中我介绍了.NET4.0之前为我们提供的各种同步基元(包括Interlocked、Monitor\lock、EventWaitHandle、Mutex、Semaphore等),随着.NET框架的进化,.NET4.0|.NET4.5又为我们带来了更多优化的同步基元选择。这当然不是告诉我们完全放弃.NET4.0之前所提供的同步基元,只是需要我们“因地制宜”。那我们如何...原创 2020-12-01 15:55:54 · 211 阅读 · 0 评论 -
【转】1.3异步编程:线程同步基元对象
开始《异步编程:同步基元对象(上)》示例:异步编程:线程同步基元对象.rar如今的应用程序越来越复杂,我们常常需要多线程技术来提高我们应用程序的响应速度。每个线程都由自己的线程ID,当前指令指针(PC),寄存器集合和堆栈组成,但代码区是共享的,即不同的线程可以执行同样的函数。所以在并发环境中,多个线程“同时”访问共享资源时,会造成共享数据损坏,我们可用线程同步锁来防止。(如果多个线程同时对共享数据只进行只读访问是不需要进行同步的)数据损坏在并发环境里,...原创 2020-12-01 15:54:18 · 358 阅读 · 0 评论 -
【转】1.2异步编程:使用线程池管理线程
从此图中我们会发现 .NET 与C# 的每个版本发布都是有一个“主题”。即:C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程。现在我为最新版本的“异步编程”主题写系列分享,期待你的查看及点评。传送门:异步编程系列目录……开始《异步编程:使用线程池管理线程》示例程序:异步编程:使用线程池管理线程.rar 如今的应用程序越来越复杂,我们常常需要使用《异步编程:线程概述及使用》中提到的多线程技...原创 2020-12-01 15:52:19 · 224 阅读 · 0 评论 -
【转】1.1异步编程:线程概述及使用
从此图中我们会发现 .NET 与C# 的每个版本发布都是有一个“主题”。即:C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程。现在我为最新版本的“异步编程”主题写系列分享,期待你的查看及点评。传送门:异步编程系列目录……开始:《异步编程:线程概述及使用》示例:异步编程:线程概述及使用.rar 做交互式客户端应用程序,用户总希望程序能时刻响应UI操作;做高性能服务器开发,使用者总希望服务器能...原创 2020-12-01 15:49:04 · 302 阅读 · 0 评论 -
【转】异步编程系列(Thread、Task、async/await、ajax等)
序经过一番努力,我写的异步编程系列也算有头有尾,当然不是说这个系列已经更新完毕,这个头尾只是表示新旧知识点都有简单涉及到,接下去我还会丰富这一系列并且有机会整个小应用(愿景是弄一个开源组件吧,结合socket)。术语:APM 异步编程模型,Asynchronous Programming ModelEAP 基于事件的异步编程模式,Event-based Asynchronous PatternTAP 基于任务的异步编程模式,Task-based As...原创 2020-12-01 15:33:37 · 312 阅读 · 0 评论