「留意文末福利」
很多小伙伴一听到并发二字就立马想到多线程。今天就来聊聊它们的区别。
斯蒂芬·克利里(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。
推 荐 阅 读
图 灵 社 群
☟ 「阅读原文」试读更多内容