原文链接:
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 Once Struct

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

被折叠的 条评论
为什么被折叠?



