Quellcode durchsuchen

ft: 完善代码

master
SisMaker vor 1 Jahr
Ursprung
Commit
9b1cec94ee
2 geänderte Dateien mit 2 neuen und 4 gelöschten Zeilen
  1. +2
    -4
      c_src/eNifLock/eNifLock.cc
  2. BIN
      priv/eNifLock.so

+ 2
- 4
c_src/eNifLock/eNifLock.cc Datei anzeigen

@ -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();

BIN
priv/eNifLock.so Datei anzeigen


Laden…
Abbrechen
Speichern