Go语言并发编程

Go语言并发编程,Go 语言 通过编译器运行时(runtime),从语言上支持了并发的特性。Go 语言的并发通过 goroutine 特性完成。Go 语言还提供 chan 在多个 goroutine 间进行通信。

并发与并行的区别

并发与并行的区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。

进程线程协程

进程线程协程概念,进程是系统进行资源分配和调度的一个独立单位。线程是指进程内的一个执行单元,也是进程内的可调度实体。协程是一种用户态的轻量级线程。

Go语言协程(goroutine)

Go语言协程(goroutine),什么是Go语言协程(goroutine),goroutine 可以看作是 协程 的 Go 语言 实现。

Go语言协程创建

Go语言协程创建,Go语言协程创建教程,goroutine 是 Go 语言 中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。

Go语言等待协程结束

Go语言等待协程结束教程,Go 语言 中要等待 goroutine 的结束,可以使用 `sync.WaitGroup` 相关的操作。

Go语言互斥锁

Go语言互斥锁教程,Go 语言 中的 sync 包提供了两种锁类型,分别为:sync.Mutex 和 sync.RWMutex,即互斥锁和 读写锁。

Go语言读写锁

Go语言读写锁,Go语言读写锁教程,Go 语言 中的 sync 包提供了两种锁类型,分别为:sync.Mutex 和 sync.RWMutex,即 互斥锁 和读写锁 。

Go语言chan

Go语言chan教程,chan 是 Go 语言 中的一个核心 类型,可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯。

Go语言chan发送接收数据

Go语言chan发送接收数据,Go语言chan发送接收数据教程,Go 语言 中的 chan 是 goroutine 之间的通信机制,因此 chan 可以用来发送和接收数据。

Go语言chan关闭

Go语言chan关闭教程,Go 语言 中的 chan 也是一种系统资源,因此,我们不需要使用 chan 时,需要手动关闭管道。关闭管道,需要使用系统内置的 close 函数。

Go语言chan通信

Go语言chan通信,Go语言chan通信教程,使用 chan 实现 协程 通信。

Go语言单向channel

Go语言单向channel,Go语言channel教程,Golang 中的 channel 默认是双向的,也就是既可以读也可以写,同时,我们还可以创建单向的 channel。

Go语言无缓冲channel

Go语言无缓冲channel,Go语言无缓冲channel教程,Golang 中的 channel 有两种类型,分别为:无缓冲 channel 和 带缓冲 channel。

Go语言带缓冲channel

Go语言带缓冲channel,Go语言带缓冲channel教程,Golang 中的 channel 有两种类型,分别为:无缓冲 channel 和 带缓冲 channel。本章节讲解带缓冲channel。

Go语言channel超时处理

Go语言channel超时处理教程,在 并发编程 的通信过程中,经常会遇到超时问题,即向 channel 写数据时发现 channel 已满,或者从 channel 试图读取数据时发现 channel 为空。

Go语言select多路复用

Go语言select多路复用,Go 语言中提供了 select 关键字,可以同时响应多个通道的操作。select 的用法与 switch 语句非常类似,由 select 开始一个新的选择块,每个选择条件由 case 语句来描述。

Go语言select超时处理

Go语言select超时处理教程,在 Golang 中,当我们使用 select 监听多个 channel 时,如果一直没有满足的 case 触发,并且 select 没有 default case 时,那么 select 就会永久的等待,select 很可能就一直阻塞程序。