乐趣区

关于golang:Go-并发编程

总述

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

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

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

并发

看起来同时

并行

真正同时

📢留神:

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

过程(process)

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

线程(thread)

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

协程(goroutine)

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


Goroutine

未完待续

退出移动版