作者回复: atomic和gopark,参考runtime/sema.go
作者回复: 意思是通过一次调用,只能从chan中获取一个值,多个。goroutine需要调用多次才能得到n个值
作者回复: 👍🏻
作者回复: 等于你的资源数。预先确定好
作者回复: 👍🏻👍🏻👍🏻
作者回复: 唯一存在的问题是可能出现死锁。 比如信号量是10,同时有两个goroutine请求8个资源。
作者回复: 这个更多是用ratelimiter,信号量主要并发访问n个资源的场景
作者回复: 理解了ctx,也就理解select。当外部context通知取消请求时,会在检查一下当前是否请求成功了