一说“并发”就想到“多线程”,那就局限了
「留意文末福利」
很多小伙伴一听到并发二字就立马想到多线程。今天就来聊聊它们的区别。
斯蒂芬·克利里(Stephen Cleary)被誉为C#并发编程领域的重要专家。他用通俗的语言给出了“并发”的定义:
并发
一次不止完成一件事。
十分言简意赅,服气!那么他又是怎么解释“多线程”的呢?
顾名思义,多线程就是使用多个线程。
当然,斯蒂芬·克利里进一步做了解释:
多线程
一种采用多个执行线程的并发形式。
瞧,并发和多线程其实是这么个关系:
多线程是一种并发形式,但绝非唯一的形式。根据斯蒂芬·克利里的描述,我们来把上图补充完整。
以下是斯蒂芬·克利里给出的通俗定义。
并行处理
也称并行编程,是一种多线程形式,指的是将大量的工作划分给多个并发运行的线程,从而处理这些工作。
异步编程
一种通过future或回调来规避多余线程的并发形式。
响应式编程
一种声明式编程,其中应用程序会对事件做出响应。
注意,响应式编程并不一定是并发的,但它与并发密切相关。
现如今,并发编程的重要性已经毋庸置疑。无论是桌面端、移动端还是服务器端,并发编程都已经渗透到开发的各个方面。利用并发编程,你可以有效地缩短用户界面响应时间,提高服务器的可扩展性。
那么问题就来了:在遇到实际的开发问题时,我怎么知道用哪种并发形式最好呢?
比如,在.NET平台上开发时,常常会遇到这样的问题:
做单元测试,程序需要异步等待一段时间,该怎么做?
在执行操作时,该怎么报告进度?
并行任务的结构和数量只能在运行时知晓,该怎么实现这种动态并行?
我需要一个不会经常改变的栈或队列,并且它可以通过多个线程安全访问。该如何实现?
我有一些共享数据,需要从多个线程中安全地读取和写入。是否应该用锁呢?
并发编程场景的种类庞杂,类似的问题还有很多。如果此时手边有一本可供随时翻查的参考书,那将十分省事!
在C#并发编程领域,恰好就有这么一本专注于帮你解决实际问题的书,而且它刚刚升级啦!
斯蒂芬·克利里 著
韩峰 译
C#并发领域顶级作品“猫书”全新升级
美亚“并行计算机编程”畅销榜Top 4
享有盛誉的C#专家Jon Skeet推荐
本书适合谁
如果你想快速找到C#并发编程问题的解决方案,那么这本书就是为你量身定制的。
在阅读前,最好有一定的.NET开发经验,知道泛型集合、枚举、LINQ等,但不需要提前了解多线程编程或异步编程。
本书特点
精选近90个实例,涵盖所有常见并发编程场景,分别针对多线程编程、异步编程、并行处理和响应式编程,以问题–解决方案-讨论的形式解答怎么做、为什么这么做。
第2版新在哪里
- 新增“异步流”一章
- 新增20个实例
- 根据C# 8.0的特性升级了代码
作者是谁
斯蒂芬·克利里,C# MVP,在ARM固件领域以及Azure服务平台等方面有着丰富的经验。他一直投身于研发开源技术,最初致力于Boost C++库,而后发布了一些自行编写的库和工具。
大牛推荐
“凭借涵盖技术之广泛,操作指南之实用,这本书无愧学习现代.NET并发编程的理想之选。”
——Jon Skeet,谷歌高级软件工程师
《深入解析C#(第4版)》作者
“计算机领域的下一件大事就是普及大型并发编程。开发人员已然拥有了前所未有的力量,但并发编程对多数人来说依旧富有挑战。斯蒂芬将我们的目光聚焦到这个问题上,帮助我们更好地理解并发编程。”
——Scott Hanselman,微软首席项目经理
“斯蒂芬·克利里已成为C#异步编程和并发编程领域的重要专家。这本书清晰、简练地阐述了这些技术的关键切入点和相关原则,能够帮助开发人员快速入门,并取得成功。”
——Stephen Toub,微软首席架构师
一 键 购 书
文 末 福 利
留言主题:你觉得并发编程难在哪里?
留言点赞最高的前 2 位读者,各送 1 本《C#并发编程经典实例(第2版)》。
从剩余的评论留言中,随机选出 2 位读者,各送 1 本《C#并发编程经典实例(第2版)》。
统计截止时间:12 月 21 日 21:00。
推 荐 阅 读
官宣:图灵的____,只卖不送
经常造轮子的 AI 工程师,水平通常不会太差
图 灵 社 群
☟ 「阅读原文」试读更多内容
一说“并发”就想到“多线程”,那就局限了相关推荐
- 5、Java并发性和多线程-相同线程
以下内容转自http://tutorials.jenkov.com/java-concurrency/same-threading.html(使用谷歌翻译): 相同线程(同一线程)是一种并发模型,其中 ...
- c+++11并发编程语言,C++11并发编程:多线程std:thread
原标题:C++11并发编程:多线程std:thread 一:概述 C++11引入了thread类,大大降低了多线程使用的复杂度,原先使用多线程只能用系统的API,无法解决跨平台问题,一套代码平台移植, ...
- week6 day4 并发编程之多线程 理论
week6 day4 并发编程之多线程 理论 一.什么是线程 二.线程的创建开销小 三.线程和进程的区别 四.为何要用多线程 五.多线程的应用举例 六.经典的线程模型(了解) 七.POSIX线程(了解 ...
- 什么是高并发?与多线程有什么区别?你的项目有高并发问题吗?是如何解决的?
高并发是指较多用户同时访问服务.高并发可以由多线程实现,但是多线程不代表就是高并发. 在会计汇有个投票调查项目,是和财政部合作的,会计人员进行填写完调查结果后,将获得5个学分.通过短信向全国500万会 ...
- 安琪拉教百里守约学并发编程之多线程基础
<安琪拉与面试官二三事>系列文章 一个HashMap能跟面试官扯上半个小时 一个synchronized跟面试官扯了半个小时 <安琪拉教鲁班学算法>系列文章 安琪拉教鲁班学算法 ...
- 进程线程、同步异步、阻塞非阻塞、并发并行、多线程
一: 进程和线程 1: 进程(Process) 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程.线 ...
- Java并发编程进阶——多线程的安全与同步
多线程的安全与同步 多线程的操作原则 多线程 AVO 原则 A:即 Atomic,原子性操作原则.对基本数据类型变量的读和写是保证原子性的,要么都成功,要么都失败,这些操作不可中断. V:即 vola ...
- 27.Linux网络编程 掌握三次握手建立连接过程掌握四次握手关闭连接的过程掌握滑动窗口的概念掌握错误处理函数封装实现多进程并发服务器实现多线程并发服务器
基本概念叫协议 什么叫协议? 协议是一个大家共同遵守的一个规则, 那么在这个网络通信当中,其实就是双方通信和解释数据的一个规则,这个概念 你也不用记,你只要心里明白就可以了, 分层模型, 物数网传会表 ...
- 【转】JAVA 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)
原文地址:https://www.cnblogs.com/edenpans/p/6020113.html 参考文章:http://ifeve.com/java-concurrency-thread-d ...
最新文章
- 数据库连接池为什么要用threadlocal呢?不用会怎样?
- 重读【代码整洁之道】
- python 今日头条 控制手机_千米矿井开5G无人运矿车像打游戏今日头条手机光明网...
- linux安装python虚拟环境_linux环境下安装python虚拟环境及注意事项
- 对称矩阵(Symmetric Matrices)
- js map 只输出key_什么时候适合使用Map而不是Object
- 自己动手写CPU(5)简单算术操作指令实现_1
- C. Orac and LCM(数论lcm, gcd)
- ES6入门之Generator函数
- flume获取mysql日志到hdfs_Hadoop实战:Flume输入日志到HDFS报错解决
- 黑夜主权个人团队html源码 简单修改即可使用
- thinkphp3.2.3漏洞_Chrome新版本修复CVE202015999 0 day漏洞
- java毕业设计小小银动漫网站源码+lw文档+mybatis+系统+mysql数据库+调试
- Ubuntu20.04、22.04安装nvidia显卡驱动——超详细、最简单
- 不经历风雨怎么见彩虹
- html 语音朗读,网页通用,语音朗读功能实现教程
- 利用社交网络数据进行推荐
- 倍福 TwinCAT背景知识
- How to convert mkv to mp4 lossless
- python高德 查询县_Python和高德开放平台——地名地址空间化及采集POI信息
热门文章
- 苹果手机数据转移到新手机_买了新手机,数据迁移用它轻松搞定
- 香港计算机本科专业,中国香港计算机本科专业包含哪些呢?
- 查看当前svn账户_SVN-基础教程学习
- 1.3.8 excel for mysql_实时生成并下载大数据量的EXCEL文件,用PHP如何实现
- rocktmq 消息延时清空_使用Kotlin+RocketMQ实现延时消息的示例代码
- 【团队】 冲刺一(10/10)
- UCloud全年营收 11.9 亿元,净利润 7715 万元
- 如何php防止XSS攻击
- zabbix trapper方式监控
- 基于lvs(DR模式)的keepalived部署