由于原生的 errgroup 有上面两个问题,因此很多公司内部,或者社区,都在原生的基础上做了一些扩展封装,用来解决原生 errgroup 的问题,比如 kratos 的 errgroup,在原生的 errgroup 之上,做了进一步的扩展,改进了没有 recover 问题和并发数量问题,err 中包含了panic 发生时的详细堆栈信息,使得 errgroup 机制更加健壮。
golang 中 mutex 定义位于mutex.go,其定义如下:golang 的读写锁基于 mutex,其定义位于rwmutex.go, 其定义如下:RWMutex 基于 Mutex 实现,在加写锁上,RWMutex 性能略差于 Mutex。