Go并发编程和调度器
创始人
2025-01-11 11:37:48
0

为什么我们要采用并发编程呢?这个问题很重要,也是我们在动手写代码之前必须要考虑的一个问题,它决定了程序的设计方式。

事实上,在某些场景下,比如编写一个 “hello world" 程序,解决一道力扣上的难题,编写一个简单的运维工具,我们都不需要考虑并发编程的问题,简单地编写一个顺序执行(也叫串行执行)的程序就可以了。但是在大部分场景下,尤其是要执行一些复杂的业务逻辑时,我们想并发地执行一些业务逻辑,比如同时执行对 N 个网站的请求,或者并发地处理客户端的请求,然后交给一个 worker 池去处理,在这些场景下,我们就需要考虑并发的问题了。

并发编程,目的就是提高程序的吞吐能力和性能,能够同时处理很多业务,而不管这些业务是相同的还是不同的。为什么并发编程能提升程序的吞吐能务和性能呢?原因如下:

合理地拆解程序的逻辑,使不同的业务模块可以并发执行,同时可以处理多个业务模块,从而在相同的时间内有更多的业务单元可以被处理。在串行编程的模式下,必须一个模块执行完,才能执行下一个模块,其中一个模块在执行的时候,其他模块就一直在等待,同一个时间点只能有一个模块执行。

当然,对程序的拆解并不是一件容易的事情。因为业务逻辑中有些部分必须等待其他并发部分全部或者部分完成后才能执行,比如统计访问几大搜索网站的平均延迟,统计模块需要等待访问百度、bing、谷歌等并发模块都返回结果后才能进行统计。我们把这种需要多个并发模块协调的逻辑处理叫作编排。

对于I/O敏感型的程序,并发编程对其性能的提升巨大。I/O 敏感型的程序会将大量的时间耗费在等待 I/O 完成上,比如从网络中读取数据,往磁盘中写入批量的持久化数据,或者访问一个数据库等。对于串行编程模型,程序在等待的过程中不能执行其他业务逻辑(即使CPU空闲);但是对于并行编程模型,程序在等待 I/O 完成的过程中完全可以处理其他业务逻辑,程序不会被阻塞,所以并行对 I/O 敏感型程序的性能提升有时候是巨大的。

并发编程可以充分利用现代 CPU 的多核能力。从 1970 年到 2002年,处理器的速度大约每 18 个月翻一番,所以当时调侃程序员对程序的优化就是耐心等待,等待新的 CPU出现,程序在新的 CPU 上运

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...