waitGroup的使用
摘要:```go package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup //一个没有缓冲区的chan ch := make(chan string) wg.Add(3) go sendData(ch,
阅读全文
golang中的mutex锁
摘要:mutex锁中一种互斥锁,如果有多个goroutine需要对同一变量进行修改则需要对该变量施加mutex锁以实现安全读写。
阅读全文
goroutine和channel
摘要:近期在学习golang的goroutine和channel时候有一些疑惑: 1. 带缓冲的channel和不带缓冲的channel有什么区别? 2. goroutine和主进程的有哪些影响和关系? 3. 多个goroutine的执行顺序是怎么样的? 通过下面的代码我们可以得到答案 第一个例子 1.
阅读全文
如何优雅的关闭Golang Channel?
摘要:Channel关闭原则 不要在消费端关闭channel,不要在有多个并行的生产者时对channel执行关闭操作。 也就是说应该只在[唯一的或者最后唯一剩下]的生产者协程中关闭channel,来通知消费者已经没有值可以继续读了。只要坚持这个原则,就可以确保向一个已经关闭的channel发送数据的情况不
阅读全文
使用context关闭协程以及协程中的协程
摘要:```go package main import ( "sync" "context" "fmt" "time" ) var wg sync.WaitGroup func worker2(ctx context.Context) { LOOP: for { fmt.Printf("worker2\
阅读全文
golang对不同系统的编译
摘要:Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。 Mac下编译 Linux下编译 Windows下编译
阅读全文