erlang's global lock
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
753 B

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