golang--好用的第三方库1

好用的golang库1 (信号量、单飞、信号栅栏、分组操作、分布式锁)

1 信号量

golang.org/x/sync :使用互斥锁 +List 实现的。互斥锁实现其它字段的保护,而 List 实现了一个等待队列,等待者的通知是通过 Channel 的通知机制实现的。

https://github.com/marusama/semaphore :可以动态更改资源容量的信号量

2 单飞模式

https://pkg.go.dev/golang.org/x/sync/singleflight 合并读请求

3 信号栅栏

https://github.com/marusama/cyclicbarrier 一组 goroutine 彼此等待,到达一个共同的执行点。同时,因为它可以被重复使用,所以叫循环栅栏。

4 分组操作

https://github.com/golang/sync/tree/master/errgroup 将一个通用的父任务拆成几个小任务并发执行

https://github.com/neilotoole/errgroup 增加了可以控制并发 goroutine 的功能

https://github.com/go-pkgz/syncs 可以控制并发的 goroutine 数量

https://github.com/vardius/gollback 用来处理一组子任务的执行的,不过它解决了 ErrGroup 收集子任务返回结果的痛点

https://github.com/AaronJan/Hunch 可以用来做任务流和前几个子任务成功或者后几个子任务成功等应用场景

https://github.com/mdlayher/schedgroup 一个和时间相关的处理一组 goroutine 的并发原语 schedgroup

https://github.com/pieterclaerhout/go-waitgroup 创建一个goroutine池来控制并发性。

5 分布式锁

github.com/coreos/etcd/clientv3/concurrency etcd 选主 Leader、分布式锁 Mutex、Locker

github.com/coreos/etcd/contrib/recipes 分布式读写锁RWMutex、分布式队列Queue、分布式优先队列PriorityQueue、分布式栅栏Barrier、分布式计数型栅栏 DoubleBarrier

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值