Golang中协程的使用

本文详细介绍了Golang中协程的使用,包括如何创建和管理协程。重点讲解了同步机制,如sync.WaitGroup、sync.Once、sync.Pool和Channel的使用。还探讨了互斥锁sync.Mutex和sync.RWMutex,以及Context在协程间通信中的作用。
摘要由CSDN通过智能技术生成

原文链接:
https://www.ahaoaha.top/2019/05/09/Golang中协程的使用/
本文相关demo,请点击此处

协程与函数返回值

golang中的协程是由Go routime进行管理的,如果函数有返回值,则这个函数的返回值会被丢弃。

Golang协程的创建

使用go FUNC_NAME(PARAMETER_LIIST)可以很简单的创建出一个协程来执行相应的操作

Golang协程的管理

同步
sync.WaitGroup

用来设置计数器等待线程完成之后再继续进行主执行流

  • func (wg *WaitGroup) Add(delta int):设置一个计数器,delta表明该计数器用来管理的协程的数量,计数器的设置应该位于主执行流中
  • func (wg *WaitGroup) Done():对计数器进行–操作,该操作应该位于协程自身的执行流的末尾
  • func (wg *WaitGroup) Wait():等待计数器所管理的协程的执行完毕,也就是在等待计数器的值变为0,如果计数器的值不为0,则主执行流会阻塞在此处

计数器变为负数的情况:会在运行时panic,panic的位置发生在sync包

sync.Once

用来控制函数只能被调用一次

  • func (o *Once) Do(f func()):保证f函数只被执行一次

可以看出,f函数通常是一个没有参数和返回值的函数

原理
type
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值