摘要: 示例 package main import "fmt" func main() { ch := make(chan int, 1) for i := 0; i < 10; i++ { select { case x := <-ch: fmt.Println(x) case ch <- i: } } 阅读全文
posted @ 2022-02-06 22:39 jihite 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 背景 在实际工作中,我们总会限制goroutine数量——worker pool模式,控制goroutine数量,避免goroutine泄露与膨胀 示例 package main import ( "fmt" "time" ) func worker(w int, jobs <-chan int, 阅读全文
posted @ 2022-02-06 18:33 jihite 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 理念 GO语言并发模型CSP: 提倡通过通信共享内存,而非通过共享内存实现通信。 如果说goroutine是Go程序并发的执行体,channel就是它们之间的连接。channel是可以让一个goroutine发送特定值到另一个goroutine的通信机制 示例 关闭后任然可以读取 func main 阅读全文
posted @ 2022-02-06 11:09 jihite 阅读(173) 评论(0) 推荐(0) 编辑