为了账号安全,请及时绑定邮箱和手机立即绑定

是否有缓冲锁定模式?

是否有缓冲锁定模式?

Go
翻阅古今 2022-05-10 16:25:12
在 Go 中有一个缓冲通道的概念。那是一个在你填满它的缓冲区之前不会被阻塞的通道。通用缓冲锁定是否有任何通用模式?它将为有限数量的客户锁定一些资源。
查看完整描述

1 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

为有限数量的客户端锁定某些资源的原语称为信号量。


它很容易通过缓冲通道实现:


var semaphore = make(chan struct{}, 4) // allow four concurrent users


func f() {

    // Grab the lock. Blocks as long as 4 other invocations of f are still running.

    semaphore <- struct{}{}


    // Release the lock once we're done.

    defer func() { <-semaphore }()


    // Do work...

}


查看完整回答
反对 回复 2022-05-10
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信