蛋蛋星球-制度模式
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

svc_lock.go 655 B

il y a 2 semaines
1234567891011121314151617181920212223
  1. package svc
  2. import (
  3. "errors"
  4. "fmt"
  5. )
  6. // HandleDistributedLockForVideo 处理短视频更新时获取锁和释放锁 如果加锁成功,使用语句 ` defer cb() ` 释放锁
  7. func HandleDistributedLockForComm(uid, fix, requestIdPrefix string) (cb func(), err error) {
  8. // 获取虚拟币更新锁
  9. balanceLockKey := fmt.Sprintf(fix, uid)
  10. requestId := GetDistributedLockRequestId(requestIdPrefix)
  11. balanceLockOk := TryGetDistributedLock(balanceLockKey, requestId, true)
  12. if !balanceLockOk {
  13. return nil, errors.New("系统繁忙,请稍后再试")
  14. }
  15. cb = func() {
  16. _, _ = ReleaseDistributedLock(balanceLockKey, requestId)
  17. }
  18. return cb, nil
  19. }