博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发编程简介
阅读量:5138 次
发布时间:2019-06-13

本文共 1150 字,大约阅读时间需要 3 分钟。

读【C#并发编程经典实例.PDF】一书总结:

1、并发:同时做多件事。

2、多线程:并发的一种形式,它采用多个线程来执行程序。所以多线程只是实现并发的一种方法,并发不等于多线程。

3、并行处理:把正在执行的大量任务分隔成小块,分配给多个正在运行的线程。  并行处理是多线程的一种,多线程是并发的一种。

4、异步编程:并发的一种形式,采用 future 形式或者回调机制,以避免产生不必要的线程。在.net,新版的future 类型有Task和Task<TResult>。在旧版中,采用回调或事件(event)。

      异步编程的核心是异步操作:启动了的才做将会在一段时间后完成。这个操作正在执行时不会阻塞原来的线程。启动了这个操作的线程可以执行其他任务。当操作结束时,会通知他的future,或者调用回调函数,以便让程序知道任务已执行完成。

  使用 async 和 await,使异步编程变得简单。

  await关键字的作用:启动一个将被执行的任务(该任务会在新线程里面执行),并立即返回。所以await所在的函数不会被阻塞。当任务完成后,继续执行await关键字后面的代码。

  async关键字的作用:主要目的是使用方法内的await关键字生效。如果async 方法有返回值,应返回Task<T>;如果没有返回值,应返回Task。这写task相当于future,用于在异步方法结束时,通知主程序

            async方法可以返回void,应该只限于在编写事件处理程序时。

            async方法由多个同步执行的程序块组成。第一个同步块由调用该方法的线程执行。一般情况下,用await等待一个任务完成,当该任务在await出暂停,就可以捕获上下文,UI线程采用UI上下文,

                处理ASP.NET才有ASP.NET上下文,其他情况采用线程池上下文。

            因此,每一个同步快都会试图在原始的上下文中恢复运行。这样造成了极小的性能耗损,要避免恢复上下文,可以在await中使用 ConfigureAwait 方法,设置continueOnCapturedContext的值为false,

            task任务完成后,将不会恢复前面的上下文。

            最好的做法:在核心库里面一直使用ConfigureAwait 。在外面的用户界面代码中,只在需要时才恢复上下文。

异步编程的好处:

1、对应面向用户的GUI程序,异步编程提高了响应能力。

2、对于服务端程序,异步编程提供了扩展力。

 

转载于:https://www.cnblogs.com/tangchun/p/9121287.html

你可能感兴趣的文章
[bzoj2002][Hnoi2010]Bounce弹飞绵羊_LCT
查看>>
我的技术历程(下)
查看>>
朱晔的互联网架构实践心得S2E2:写业务代码最容易掉的10种坑
查看>>
[实战]3天让Web应用承载拓展1000倍
查看>>
做一个开源的小程序登录模块组件(token)
查看>>
中国六大最忙和六大最懒城市
查看>>
并发编程之死锁
查看>>
Ubuntu 下 su:authentication failure的解决办法
查看>>
Git 使用ssh密钥
查看>>
四叶草与动感线条背景矢量图
查看>>
汇编语言第一章 基础知识 总结
查看>>
商城项目基本框架开源
查看>>
PowerDesigner 15学习笔记:十大模型及五大分类
查看>>
passport 自动取密码
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
物联仓储系统ZigBee组网原理
查看>>
Linux下Nginx+Tomcat整合的安装与配置
查看>>
linux命令之let、expr
查看>>
Asp.Net Url 传值出现乱码的解决方法
查看>>
JavaScript常用检测脚本(正则表达式)
查看>>