在应用系统中,常见的的应用场景就是调用一个生成器:生成订单号,序列号,随机数等。
golang goroutine为这种需求提供了强大的武器。
1.简单的生成器
package main
import (
"fmt"
"math/rand"
)
func GenerateIntA()chan int {
ch := make(chan int ,10)
go func(){
for {
ch<-rand.Int()
}
}()
return ch
}
func main(){
ch := GenerateIntA()
fmt.Println(<-ch)
fmt.Println(<-ch)
}
可以使用多路复用技术进行堆积叠加,增加服务能力
可以使用缓冲chan增加服务能力
package main
import (
"fmt"
"math/rand"
)
func GenerateIntA() chan int {
ch := make(chan int, 10)
go func() {
for {
ch <- rand.Int()
}
}()
return ch
}
func GenerateIntB() chan int {
ch := make(chan int, 10)
go func() {
for {
ch <- rand.Int()
}
}()
return ch
}
func GenerateInt() chan int {
ch := make(c