总述

Go依附独特的轻量级的协程 轻松创立上百万个工作不会导致系统的资源衰竭 (相比起来过程和线程最多也不会超过1w个)

接下来次要从这几个方面开展:

  • 什么是并发编程
  • Go如何实现并发
  • 并发的原理
  • 协程之间通信依附的chanel
  • 同步异步
  • 数据安全

并发

看起来同时

并行

真正同时

留神:

  • 并行肯定是多核的
  • 并行看上去很牛逼 然而因为其工作之间的通信老本很高 导致其成果不肯定好

过程(process)

每一个独立进行的程序就是过程,是程序中的一次动静执行过程,可与了解为正在执行的程序,是系统资源调度和调配的根本单位,领有独立的内存单元,须要经验从代码加载,执行,到最初执行结束。多过程的零碎能够同时运行多个程序,因为CPU有本人的分时机制,所以每个程序都能够获取到本人的工夫片,然而过程之间的信息交互比拟麻烦,另外过程的创立,撤销,切换的开销大。

线程(thread)

线程是一个根本的CPU单元,是CPU调度和调配的最小单位。同一个过程下的线程能够共享系统资源,线程之间的切换代价小于过程之间的切换

协程(goroutine)

是一种用户态的轻量级线程,协程的调度齐全通过用户来管制,协程和子函数很相似,一个入口 一次返回 一旦退出 就是实现。


Goroutine

未完待续