erlang's global lock
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

26 行
848 B

  1. eGLock
  2. =====
  3. erlang的全局锁,不可重入。写这个的目的是考虑slg大地图场景的战斗会存在大乱斗,各个战斗目标血量处理需要全局锁处理。
  4. 当然也可以用于游戏里面的世界商店 交易中心 大地图修建相关
  5. Build
  6. -----
  7. $ rebar3 compile
  8. 说明
  9. ----
  10. eGLock 基于c++11 atomic
  11. 其中要锁的key 不能是列表的字符串 原因是锁表的key会判断是否为list来区分是锁单key 还是锁列表
  12. 另外建议锁的key需要通过宏定义来生成 维护时好搜查删改
  13. 对于 tryLock和releaseLock的使用应该在try里面使用并在after调用releaseLock,就像这样:
  14. try
  15. true = eGLock:tryLock(KeyOrKeys),
  16. %% doSomeThing
  17. catch C:R:S ->
  18. %% do error
  19. after
  20. eGLock:releaseLock(KeyOrKeys)
  21. end.