golang Context for goroutines
概要 goroutine 的控制 取消控制 超时控制 goroutine 之间的传值 总结 概要 golang 的提供的 channel 机制是基于 CSP(Communicating Sequencial Processes)模型的并发模式. 通过 channel, 可以很方便的写出多个 协程 (goroutine)之间协作的代码, 将顺序的代码改成并行的代码非常简单. 改造成并行的代码之后, 虽然可以更好的利用多核的硬件, 有效的提高代码的执行效率, 但是, 也带来了代码控制的问题. 并行的代码显然比顺序执行的代码更难于管理和控制, 这时, 就得靠 golang 提供的 Context 接口来帮助我们控制 goroutine 了. goroutine 的控制 goroutine 之间最基本的控制, 就是通过 channel 来交互数据: 1 func routineSample() { 2 ch := make(chan int, 10) 3 go p1(ch) 4 go c1(ch) 5 go c2(ch) 6 7 time.Sleep(10 * time.Second) 8 } 9 10 func p1(ch chan int) { 11 fmt.Println("Parent go routine!") 12 13 for i := 0; i < 10; i++ { 14