Go语言并发编程和依赖管理 | 青训营笔记

104 阅读2分钟

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

这几天就是不断再补基础知识,然后并对此做个记录,同时也完成青训营的课程的笔记记录,然后最后再总结一下

一、本堂课重点内容

并发编程:

  • 首先重点讲了一下关于并发的内容,同时也讲了go语言的协程的知识点,同时还有用来协程通信的管道内容, 依赖管理
  • 主要讲了关于go依赖包的管理的相关内容

二、详细知识点介绍

  • 1.并发编程 首先是并发和并行的概率 并发是指多个线程在同一个CPU上运行,主要是通过时间片的切换看起来像多个程序在同时运行,只不过CPU时间片的切换十分迅速,所以看起来像同时运行 并行是真正意义多个线程在多个CPU上运行,

  • Goroutine 然后就是go的一大亮点,协程的讲解,协程是不同于线程,它是轻量级的,资源消耗少, 使用的时候在调用函数前加上关键词go即可使用协程。

  • 协程之间的通信 go语言提倡通过通信共享内存而不是通过共享内存实现通信。 通道(channel) 通过make(chan 元素类型,缓冲大小)来建立通道,同时可以设置缓存大小,缓存可以解决协程之间运行不均衡带来的执行效率问题。

  • 并发安全Lock 通过lock.Lock()来上锁,通过lock.UnLock()来解锁,解决数据不一致问题,但会降低运行效率。

  • WaitGroup 用于计算协程计数器,打开协程的时候Add()将计数器增加,协程执行结束用Done()将计数器-1,Wait()阻塞等待计数器计为0。

  • 2.依赖管理 go Module 用来管理go的依赖包和版本控制的一个依赖包管理工具, GoModule 依赖配置1.16版本后默认开启的模式 通过go.mod文件管理依赖的版本 通过go get或者go mod指令工具获取依赖包

  • 依赖管理三要素

  1. 配置文件,描述依赖 go.mod
  2. 中心仓库管理依赖库 Proxy
  3. 本地工具 go get/mod

三、课后个人总结

可以说了解go一大亮点协程的概念和使用,以及协程之间的通信管道的概念,同时也明白了类似java依赖管理工具maven的gomodule的使用和依赖版本概念