Go语言入门-工程实践| 青训营笔记

82 阅读2分钟

Go语言入门-工程实践| 青训营笔记


这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

因为我对Go语言了解的不深,所以我也一直在看b站的课,和字节内部课结合着去听,去看。现在基本算是知道循环什么的一些基本概念了。

赵征老师说这一章能让大家知道Go语言为什么这么快。


1.语言进阶

从并发编程的视角带大家了解Go高性能的本质

image.png

并发:

从多线程运行的一个视角来看,其实并发指的是多线程在一个核的cpu上运行。它主要是通过时间片的一个切换来实现同时运行的状态。

并行:

直接利用多核实现多线程的同时运行。 广义可以理解成系统对外的一种特征,就比如大家去面试,就会说我参加某某某高并发项目这里其实是一个广义的一个并发。在实习中可以把并行理解成并发的一个手段。

Go语言实现了并发性能提高的一个调动模型,通过高效的调动可以最大限度的利用计算资源,充分发挥多核计算机的优势,可以说Go语言是为并发而生的。


image.png 而实现高并发能力在Go的运行机制里有一个重要概念——协程。

对比一下线程来讲解协程。

线程是在系统里比较昂贵的系统资源,属于内核态。它的创建、切换、停止,都属于很重的系统操作,是比较消耗资源的。栈MB级别

协程可以理解成轻量级线程,用户级的一个线程。协程的创建和调度由Go语言本身完成。它会比线程轻量很多,线程可以并发的跑多个协程。栈KB级别。Go语言一次可以创建上万左右个协程。这就是Go语言更适合高并发场景的原因所在。