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

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

  • 相关阅读:
    HTTP权威指南笔记-1.概述
    C# 设计模式之工厂模式(一)
    C# 读取Excel内容
    C# 反射
    C# 分部类与分部方法
    图像处理
    mysql 使用问题?
    第一节mysql 安装
    软件包管理
    第四节基础篇
  • 原文地址:https://www.cnblogs.com/GonM/p/Concurrency.html
Copyright © 2011-2022 走看看