解决Golang 中使用WaitGroup的那点坑
sync.WaitGroup对于Golang开发者来说并不陌生,其经常作为多协程之间同步的一种机制。用好它势必会让你事半功倍,但是一旦错用将引发问题。关于WaitGroup的使用网上有很多例子,在此就不做介绍了,我想说的是我在项目中使用WaitGroup遇到的坑。在项目中,因为服务器有同步需求, 所以直接使用了WaitGroup,但是未考虑使用场景,结果在项目上线之后,高峰期的时候客户端经常出现卡顿,经过多方查找,才发现如果使用WaitGroup的时候,未启动单独的goroutine,那么极有可能造成主线程的阻塞所以我做了下面的测试:输出为:。等待什么,等待goroutine完成啊。所以,WaitGroup这个东西,就可以帮助我们解决这个问题,还是老样子,我举一个简单的例子来说明我的想法。wg.Add()的数值必须为正数,如果为负数,将会抛出异常。
用户评论