zoukankan      html  css  js  c++  java
  • [C#] 《Concurrency in C# Cookbook》读书笔记(一)- 并发编程概述

    并发编程概述

    前言

      我们经常在耳边听说一些关于高性能、并发和并行等名词,并且很多人都对并发编程有一些误解。


      误解 1:并发就是多线程?
      答:多线程只不过是并发编程的其中一种形式而已。并发编程的种类很多:如异步、并行、TPL 数据流和响应式编程等。
      误解 2:只有大型服务器程序才需要考虑高并发?
      答:我们平时常用的桌面应用、手机移动端应用和 B/S 应用等都应该考虑使用并发编程,现代用户的生活质量普遍提高,带宽也越来越大,用户的要求也越来越苛刻。用户的请求必须得到及时快速的响应,无法满足这样需求的企业,用户的流失也是必然的。
      误解3:并发编程很复杂,只是高手的专利?
      答:No!No!No! 在 long long ago,也许说的很对,那时候也的确是高级程序员的杰作。但到了现在,从 .NET 4.5 引入的 async/await 关键字,编写异步代码已经变成一件很轻松的事情了。

    1.1 并发编程简介

      1.并发:同时做多件事情。

      -- 利用并发,在对 DB 进行读写操作的同时也可以响应用户的输入;
      -- 利用并发,服务器可以同时处理多个请求;
      -- 假如你希望编写的程序可以同时做多件事情,你就需要使用并发技术。

      2.多线程:并发的一种形式,采用多个线程来执行程序。
      -- 多线程只是并发的一种形式,不是唯一形式。我们从 .NET 4.5 开始就应该使用更高级的抽象机制让程序变得更加强大、效率更高。

      

      【注意】一旦你输入 new Thread(),说明项目中的代码已经过时了。

      3.并行处理(并行编程):把正在执行的大量的任务分割成小块,分配给同时运行的线程。

      --线程池中要求使用多线程的技术,它存放着任务的队列,并且这个队列能够根据需要自行调整。相应地,产生了另一种并发形式:并行处理。
      -- 希望处理器的利用率最大化,通过多线程来实现并行处理。现代个人 PC 的 CPU 动不动就 4 核以上的,如果只用其中一个核来执行任务,其它核空闲待命中,岂不是浪费资源。
      -- 通过并行处理,把任务划分成小块,并分配给多个线程,让他们在不同的核心上独立运行。
      -- 并行处理是多线程中的一种,多线程是并发的一种。

      4.异步编程:并发的一种形式,采用 future 模式或回调(callback)机制,以避免产生不必要的线程。
      -- 异步编程的核心理念是异步操作:启动了的操作将会在一段时间后完成。该操作正在执行时,不会阻塞原来的线程。启动了改操作的线程,可以继续执行其他任务。当操作完成时(方法调用完毕),会通知它的 future,或者调用回调函数通知程序。

      5.响应式编程:一种声明式的编程模式,程序在该模式中对时间做出响应。
      -- 和异步编程不同的是,异步编程基于异步操作,它基于的是异步事件。异步事件可以没有一个实际的“开始”,可以在任何时间,并且可以发生多次,如用户输入。
      -- 如果把程序看成一个强大的状态机,则该程序的行为可视为它对一系列事件所做出的响应,即每触发一个事件就更新一次状态。响应式编程不一定是并发的,但在考虑并发的时候是需要把它一起思考进去的。

          引自:http://www.cnblogs.com/liqingwen/p/7206210.html

      本文版权归作者和博客园共有,欢迎转载。未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。
      如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!

  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/GonM/p/Concurrency.html
Copyright © 2011-2022 走看看