go快速入门并发-channel

概述

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

channel的简单使用

定义通道

var c = make(chan int)

定义通道的接收方

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

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

c <- 1

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

并发比较

用循环模拟1000请求

  1. 普通请求的处理
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图图是只猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值