zoukankan      html  css  js  c++  java
  • 《C#并发编程经典实例》学习笔记-关于并发编程的几个误解

    误解一:并发就是多线程
    实际上多线程只是并发编程的一种形式,在C#中还有很多更实用、更方便的并发编程技术,包括异步编程、并行编程、TPL 数据流、响应式编程等。
    误解二:只有大型服务器程序才需要考虑并发
    服务器端的大型程序要响应大量客户端的数据请求,当然要充分考虑并发。但是桌面程序和手机、平板等移动端应用同样需要考虑并发编程,因为它们是直接面向最终用户的,而现在用户对使用体验的要求越来越高。程序必须能随时响应用户的操作,尤其是在后台处理时(读写数据、与服务器通信等),这正是并发编程的目的之一。
    误解三:并发编程很复杂,必须掌握很多底层技术
    C# 和 .NET 提供了很多程序库,并发编程已经变得简单多了。尤其是 .NET 4.5 推出了全新的 async 和 await 关键字,使并发编程的代码减少到了最低限度。

    上述摘自译者序。
    本书基本信息:
    著    [美] Stephen Cleary
    译    相银初

    市面上关于并发的技术书,大多是Java相关。有个前辈推荐了这本书,耐心看了一遍,真心觉得真是不错,决定精读并写一个系列笔记博客。前辈推荐的时候是去年年初,到现在决定写博客,已经一年半过去,羞愧羞愧,执行力不高,但总归是开始着手做了,希望能坚持下来。

    提到并发就不得不提并行,即并行(Parallel)和并发(Concurrent)的区别。
    知乎的一个回答我觉得拿来解释最合适不过,这个解释的角度是从CPU为出发点。
    并发与并行的区别? - 刘志军的回答 - 知乎

    并发是两个队列交替使用一台咖啡机,并行是两个队列同时使用两台咖啡机

    咖啡机指CPU,排队的队伍可以是线程(thread)也可以是进程(process)。
    进程(process)和线程(thread)的概念描述打算独立成文,下次就写。

    在对误解一的解释中,可以看出作者是认为并行编程也属于并发编程的。是的,并行应该是属于并发的一种,对并发的概念来说,并行可以认为是并发的一种特殊情况。

    在后续的笔记中我会将书中的伪代码实例尝试写成可运行的代码,用于自己强化理解和记忆,这也是精读的意义所在。写的代码有所不足之处,望不吝指教。

  • 相关阅读:
    写了一个自动打包并发布到tomcat的脚本
    查看并更改mysql编码
    MyBatis无法根据中文条件查询出结果
    服务器端PHP多进程编程
    PHP-popen() 函数打开进程文件指针
    php并发处理
    PHP能得到你是从什么页面过来的,r…
    PHP如何解决网站大流量与高并发的…
    基于PHP的cURL快速入门
    Mysql内存表的用处
  • 原文地址:https://www.cnblogs.com/AlienXu/p/9388005.html
Copyright © 2011-2022 走看看