Goroutine Pool

Goroutine Pool 1package test 2 3import ( 4 "fmt" 5 "runtime" 6 "testing" 7 "time" 8) 9 10type PPool struct { 11 EntryChan chan func() error 12 JobChan chan func() error 13 WorkNum int 14} 15 16func NewPPool(cap int) *PPool { 17 p := PPool{ 18 EntryChan: make(chan func() error), 19 JobChan: make(chan …

Fan vs Go Func

Fan vs go func test script 1func gen(nums ...int) <-chan int { 2 out := make(chan int) 3 go func() { 4 for _, n := range nums { 5 out <- n 6 } 7 close(out) 8 }() 9 return out 10} 11func sq(in <-chan int) <-chan int { 12 out := make(chan int) 13 go func() { 14 for n := range in { 15 out <- n * n 16 } 17 close(out) 18 …