1、并发与并行 ①. 并发(Concurrency): 并发指的是多个任务在同一时间段内交替执行,而不是同时执行。在并发模型下,系统通过在不同的时间段内轮流执行任务来实现多任务之间的切换。这样的执行方式可以提高系统的效率,因为当一个任务需要等待某些资源时,其他任务可以继续执行,不会造成整个系统的停滞。
并发的典型例子是操作系统中的多线程或协程。在单核处理器上,由于只有一个物理 CPU,多个线程或协程的执行是交替进行的,称为时间片轮转调度。而在多核处理器上,不同的核心可以同时执行不同的线程或协程,实现真正的并行。
②. 并行(Parallelism): 并行指的是多个任务在同一时刻同时执行,每个任务都在不同的处理器核心上运行。在并行模型下,多个任务可以同时执行,并通过多核或多处理器来实现加速执行。并行能够显著提高计算性能,特别是对于需要大量计算的任务。
并行的典型例子是多核处理器上的并行计算,例如同时执行多个线程或进程,每个线程或进程分配到不同的核心。
2、线程和协程 线程可以跑多个协程,他们的关系图如下:
3、协程的创建
4、通信: go语言是通过通信来共享内存,不是共享内存而进行通信的,示意图如下:
缓冲通道通过指定通道的容量来实现缓冲,容量表示通道中可以存储的元素数量 可以用make关键字创建缓冲通道: 无缓冲通道也称为同步通道 有缓冲通道也称为异步通道
go.mod go.mod 是 Go 语言中的模块文件,用于管理项目的依赖关系和版本信息 用于替代原先的 GOPATH 和 vendor 目录的依赖管理方式,以更好地管理项目的依赖和版本管理。
go.mod 文件位于项目的根目录下,它记录了项目所依赖的其他模块(也就是包)以及它们的版本信息。在项目中使用 import 导入其他模块时,Go 语言会根据 go.mod 文件来解析和下载依赖的模块,如下图: