Golang
文章平均质量分 93
haozlee
多年linux开发经验,熟悉c++,python。个人主页:https://leehao.me
展开
-
Go 并发:带缓冲的通道
在上一篇文章 《Go 并发:Channel 通道》中,我们讨论了通道的一些基本特性,需要指出的是,之前讨论的通道都是不带缓冲的通道,也就是说从通道接收数据和往通道发送数据都会阻塞,直到有其他 goroutine 往通道发送数据或从通道接收数据。在这篇文章中,我们继续讨论带缓冲的通道的使用。带缓冲的通道可以创建带缓冲的通道。往通道发送数据时,只有当缓冲满时才会阻塞。同理,从通道接收数据时,只有当缓冲为空时才会阻塞。可以使用 make 函数来创建带缓冲的通道:ch := make(chan type,原创 2022-02-22 22:18:08 · 1436 阅读 · 0 评论 -
Go 并发:Channel 通道
在上一篇文章《Go 并发机制:Goroutine》中,我们讨论了 Go 如何使用 goroutine 实现并发。本文我们继续讨论 goroutine 如何利用 channel 来进行通信。什么是 channelChannel,通道,可看作是 goroutine 进行通信的管道(pipe)。跟水可以在管道中从一端流向另一端类似,数据也可以通过通道从一端发送,从另一端接收。声明 channel每一个通道都有一个具体的类型,即这个通道允许传输的数据类型。ch T一个类型为 T 的通道。通道的零值为原创 2022-02-06 11:05:42 · 718 阅读 · 0 评论 -
Go 并发机制:Goroutine
Go 是当前一门热门的编程语言,其优秀的并发特性吸引了无数程序员的目光。Go 的并发特性是一个比较大的话题,笔者计划从以下三个方面讨论:Go goroutineGo channelGo select本文讨论 Go 的 goroutine 并发机制。并发与并行在讨论 goroutine 之前,我们先来看下并发与并行的区别。多线程程序在单核心的 cpu 上运行,称为并发;多线程程序在多核心的 cpu 上运行,称为并行。并发与并行并不相同,并发主要由切换时间片来实现“同时”运行,并行则是直接利原创 2022-01-11 08:57:19 · 715 阅读 · 0 评论