当前位置:网站首页>go基础之并发
go基础之并发
2022-08-11 09:47:00 【51CTO】
go并发非常简单,就是使用关键字go添加到任意一个函数前面,该函数就会成为一个goroutine。
最后time.Sleep(5 * time.Second)是为了阻止还没有执行完print()就结束程序,要不会还没有打印程序就结束了。
根据输出都是从0-10,好像并发没有什么作用,主要是print函数太快,所以看不出有什么区别。把print函数加些延迟效果就出来了
假如有这么一个需求,在2次print函数之后,还有个函数名字叫call(),这个call()函数需要在2次print函数执行后才能执行,这样如何写呢?
go语言sync包中提供了一个名叫等待组的机制,使用Add方法设置等待组的计数器,使用Done方法对等待组的计数器减1,调用Wait方法会一直阻塞,直到计数器为0才往后执行。
通过wg.Add(2)设置计数器为2,每次执行完print时,通过wg.Done()使计数器减1,wg.Wait()进行阻塞,2个print函数执行完,计数器变为0,往后执行call()。这样最后的一个等待时间就不再需要了。
边栏推荐
猜你喜欢
使用树莓派和OAK相机部署机器人视觉模型
同态加密简介HE
The mathematical knowledge required for neural networks, the mathematical foundation of neural networks
STM32之串口传输结构体
A few days ago, Xiaohui went to Guizhou
Lightweight network (1): MobileNet V1, V2, V3 series
Primavera Unifier 自定义报表制作及打印分享
SDUT 2877: angry_birds_again_and_again
分割学习(loss and Evaluation)
Oacle数据库使用问题
随机推荐
【Prometheus】 Grafana数据与可视化
Simple strokes on the Internet
HDRP shader to get shadows (Custom Pass)
How to analyze the neural network diagram, draw the neural network structure diagram
Network model (U - net, U - net++, U - net++ +)
1.3版本自定义TrainOneStepCell报错
MongoDB 对索引的创建查询修改删除 附代码
Convolutional Neural Network Gradient Vanishing, The Concept of Gradient in Neural Networks
Contrastive Learning Series (3)-----SimCLR
最强大脑(9)
企业展厅制作要具备的六大功能
qspi 接口与普通四线SPI 接口什么区别?
OAK-FFC系列产品上手指南
谁能解答?从mysql的binlog读取数据到kafka,但是数据类型有Insert,updata,
在软件工程领域,搞科研的这十年!
Oacle数据库使用问题
【剑指offer】左旋字符串,替换空格,还有类题!!!
【luogu CF1427F】Boring Card Game(贪心)(性质)
软件定制开发——企业定制开发app软件的优势
collect awr