mirror of
https://github.com/kaka111222333/kaka111222333.github.io.git
synced 2025-12-17 15:25:10 +08:00
update md
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
这篇文章是新手向教程,用图解的形式带你学习和掌握进程、线程、协程,力求文字简单明了,对于复杂概念做到一个概念一张图解,即使你是编程小白也能看的明明白白,妈妈再也不用担心你的学习。
|
||||
很早之前就在构思这个主题,进程线程可以说是操作系统基础,看过很多关于这方面知识的文章都是纯理论讲述,编程新手有些难以下咽。于是写下这篇文章,用图解的形式带你学习和掌握进程、线程、协程,文字力求简单明了,对于复杂概念做到一个概念一张图解,即使你是编程小白也能看的明明白白,妈妈再也不用担心你的学习。
|
||||
|
||||

|
||||
|
||||
@@ -167,13 +167,15 @@
|
||||
|
||||
协程的知名度好像不是很高,在以前我们谈论高并发,大部分人都知道利用多线程和多进程部署服务,提高服务性能,但一般不会提到协程。其实协程的概念出来的比线程还早,只不过最近才被人们更多的提起。
|
||||
|
||||
协程之所以最近被大家熟知,个人觉得是 `Python` 和 `Go` 从语言层面提供了对协程更好的支持,尤其是以 `Goroutine` 为代表的 Go 协程实现,很大程度上降低了协程使用门槛,更是让协程走进寻常百姓家。
|
||||
协程之所以最近被大家熟知,个人觉得是 `Python` 和 `Go` 从语言层面提供了对协程更好的支持,尤其是以 `Goroutine` 为代表的 Go 协程实现,很大程度上降低了协程使用门槛,可以说是后起之秀了!
|
||||
|
||||

|
||||
|
||||
### why 协程
|
||||
|
||||
当今无数的 Web 服务和互联网服务,本质上大部分都是 IO 密集型服务,什么是 IO 密集型服务?意思是处理的任务大多是和网络连接或读写相关的高耗时任务,高耗时是相对 CPU 计算逻辑处理型任务来说,两者的处理时间差距不是一个数量级的。
|
||||
|
||||
IO 密集型服务的瓶颈不在 CPU 处理速度,而在于尽可能快速的完成高并发、多连接下的数据读写。
|
||||
**IO 密集型服务的瓶颈不在 CPU 处理速度,而在于尽可能快速的完成高并发、多连接下的数据读写。**
|
||||
|
||||
**以前有两种解决方案:**
|
||||
|
||||
@@ -183,7 +185,7 @@ IO 密集型服务的瓶颈不在 CPU 处理速度,而在于尽可能快速的
|
||||
|
||||
**协程出现给高并发和 IO 密集型服务开发提供了另一种选择。**
|
||||
|
||||
当然,世界上没有技术银弹,在这里我想把协程这把钥匙交到你手中,但是它也不是万能钥匙,最好的解决方案是贴合自身业务类型做出最优选择。
|
||||
当然,世界上没有技术银弹,在这里我想把协程这把钥匙交到你手中,但是它也不是万能钥匙,最好的解决方案是贴合自身业务类型做出最优选择,不一定就选择一种模型,有时候是几种模型的组合,比如多线程搭配协程是常见的组合。
|
||||
|
||||
|
||||
|
||||
@@ -233,7 +235,7 @@ Goroutine 是 Golang 的协程实现。Goroutine 的栈只有 2KB大小,而且
|
||||
|
||||
#### Go语言协程实现
|
||||
|
||||
Golang 在语言层面实现了对协程的支持,`Goroutine` 是协程在 Go 语言中的实现, 在Go语言中,每一个并发的执行单元叫作一个 `Goroutine` ,Go 程序可以轻松创建成百上千个协程并发执行。
|
||||
Golang 在语言层面实现了对协程的支持,`Goroutine` 是协程在 Go 语言中的实现, 在 Go 语言中每一个并发的执行单元叫作一个 `Goroutine` ,Go 程序可以轻松创建成百上千个协程并发执行。
|
||||
|
||||
Go 协程调度器有三个重要数据结构:
|
||||
|
||||
@@ -251,5 +253,16 @@ Go 调度器最多可以创建 10000 个线程,但可以通过设置 `GOMAXPRO
|
||||
|
||||
## 总结
|
||||
|
||||
通过
|
||||
这篇文章讲解和对比了进程、线程的概念,同时通过进程窥探到操作系统内存管理的冰山一角,另外还讲解了具体到 Linux 系统下线程的实现现状,顺势引出了轻量级进程的概念。最后着重说明了大部分同学不太了解的协程,通过对比不同的服务模型,带你了解协程的特点。
|
||||
|
||||
说明一下,文中的图片都是我手绘的,原图我没打水印方便阅读,不过微信发出去之后会对图片压缩和打上水印,如果你想要下载高清原图,留着时不时温故知新,我也乐意无偿提供原图给你下载,在公众号「后端技术学堂」回复「进程」即可获取,对知识的理解有时候真的是一图胜千言,也是我文章的价值所在。
|
||||
|
||||
## 再聊两句
|
||||
|
||||
最近公众号改版了,我发的文章可能不能出现在你的消息列表中,不敢称自己是小号主,对于我这种 mini 号主影响还是很大的,写公众号文章的都知道,发出去的文章都想让更多人看到,才有机会得到持续的正向反馈,激励我持续创作和分享。
|
||||
|
||||
**所以,如果觉得文章写的还行,对你有点帮助,就动动手指点个「在看」顺手加个「星标」让我们还能及时再见。**
|
||||
|
||||

|
||||
|
||||
感谢各位的阅读,文章的目的是分享对知识的理解,技术类文章我都会反复求证以求最大程度保证准确性,若文中出现明显纰漏也欢迎指出,我们一起在探讨中学习。今天的技术分享就到这里,我们下期再见。
|
||||
Reference in New Issue
Block a user