意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

go快速入门并发-channel

来源:恒创科技 编辑:恒创科技编辑部
2024-01-23 07:00:59


概述

用简单的示例解决go并发与普通单线程的区别:
1000个请求进来:
go的并发解决速度
go的单线程解决速度
两者比较即可了解go并发的魅力

channel的简单使用

定义通道


go快速入门并发-channel

var c = make(chan int)

定义通道的接收方

func worker(i chan int)  {
fmt.Println(<-i)
}
go worker(c)

通道的使用:
接收方 ⬅ 发送值

c <- 1

注意向通道发值的时候必须先定义通道的接收方

并发比较

用循环模拟1000请求

普通请求的处理
for i := 0 ; i < 1000 ; i++ {
print(i)
}

//该方法可表示处理单个请求的处理时间
func print(i int) {
fmt.Println(i)
time.Sleep(time.Microsecond)
}

花费时间:15s

2.channel 请求的处理

//定义通道
var c = make(chan int)

for i := 0 ; i < 1000 ; i++ {
//先建立起通道接收方才能向通道传值
go worker(c)
c <- i
}
//该方法可表示处理单个请求的处理时间
func worker(i chan int) {
fmt.Println(<-i)
time.Sleep(time.Microsecond)
}

花费时间:68ms


上一篇: Java单例模式之总有你想不到的知识 下一篇: 手机怎么远程登录云服务器?