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

是否有缓冲锁定模式?

是否有缓冲锁定模式?

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 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号