erlang's global lock
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
SisMaker 77c052dafb ft: 内联优化 vor 2 Monaten
c_src/eNifLock ft: 内联优化 vor 2 Monaten
priv ft:nif编译选项优化 vor 4 Monaten
src ft:自旋锁添加退避策略 优化 vor 3 Monaten
.gitignore ft: 完成提交 vor 1 Jahr
LICENSE ft: 完成提交 vor 1 Jahr
README.md ft: 删除无用的定义 vor 11 Monaten
rebar.config ft:优化全局eNpc编译 vor 6 Monaten

README.md

eGLock

erlang的全局锁,不可重入。写这个的目的是考虑slg大地图场景的战斗会存在大乱斗,各个战斗目标血量处理需要全局锁处理。 
当然也可以用于游戏里面的世界商店 交易中心 大地图修建相关

Build

$ rebar3 compile

说明

eGLock 基于c++11 atomic  
其中要锁的key 不能是列表的字符串 原因是锁表的key会判断是否为list来区分是锁单key 还是锁列表
另外建议锁的key需要通过宏定义来生成 维护时好搜查删改
对于 tryLock和releaseLock的使用应该在try里面使用并在after调用releaseLock,就像这样:
try 
    true = eGLock:tryLock(KeyOrKeys),
    %% doSomeThing
catch C:R:S ->
    %% do error
after 
    eGLock:releaseLock(KeyOrKeys)
end.