总述
Go 依附独特的轻量级的协程 轻松创立上百万个工作不会导致系统的资源衰竭(相比起来过程和线程最多也不会超过 1w 个)
接下来次要从这几个方面开展:
- 什么是并发编程
- Go 如何实现并发
- 并发的原理
- 协程之间通信依附的 chanel
- 同步异步
- 数据安全
并发
看起来同时
并行
真正同时
📢留神:
- 并行肯定是多核的
- 并行看上去很牛逼 然而因为其工作之间的通信老本很高 导致其成果不肯定好
过程(process)
每一个独立进行的程序就是过程,是程序中的一次动静执行过程,可与了解为正在执行的程序,是系统资源调度和调配的根本单位,领有独立的内存单元,须要经验从代码加载,执行,到最初执行结束。多过程的零碎能够同时运行多个程序,因为 CPU 有本人的分时机制,所以每个程序都能够获取到本人的工夫片,然而过程之间的信息交互比拟麻烦,另外过程的创立,撤销,切换的开销大。
线程(thread)
线程是一个根本的 CPU 单元,是 CPU 调度和调配的最小单位。同一个过程下的线程能够共享系统资源,线程之间的切换代价小于过程之间的切换
协程(goroutine)
是一种用户态的轻量级线程,协程的调度齐全通过用户来管制,协程和子函数很相似,一个入口 一次返回 一旦退出 就是实现。
Goroutine
未完待续