diff --git a/c_src/eNifLock/eNifLock.cc b/c_src/eNifLock/eNifLock.cc index 84527e3..c388775 100644 --- a/c_src/eNifLock/eNifLock.cc +++ b/c_src/eNifLock/eNifLock.cc @@ -64,13 +64,11 @@ ERL_NIF_TERM tryLocks(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]){ if(lockOne(env, &ThePid, KeyIx, Val)){ cnt++; }else{ - uint64_t RExpected; allList = argv[0]; for(int i = 0; i <= cnt; i++){ enif_get_list_cell(env, allList, &head, &allList); enif_get_int(env, head, &KeyIx); - RExpected = Val; - LockSlot[KeyIx].compare_exchange_strong(RExpected, 0); + LockSlot[KeyIx].store(0); } return atomFalse; } @@ -114,7 +112,7 @@ ERL_NIF_TERM releaseLocks(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]){ ERL_NIF_TERM getLockPid(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]){ int KeyIx; - KeyIx = enif_hash(ERL_NIF_INTERNAL_HASH, argv[0], HashSalt) % LockSize; + enif_get_int(env, argv[0], &KeyIx); ErlNifPid ThePid; uint64_t Var = LockSlot[KeyIx].load(); diff --git a/priv/eNifLock.so b/priv/eNifLock.so index 4a31770..8bf4399 100644 Binary files a/priv/eNifLock.so and b/priv/eNifLock.so differ