Explorar el Código

ft: 优化更加高效的版本

master
SisMaker hace 1 año
padre
commit
27b4cdf35a
Se han modificado 1 ficheros con 2 adiciones y 2 borrados
  1. +2
    -2
      c_src/eNifLock/eNifLock.cc

+ 2
- 2
c_src/eNifLock/eNifLock.cc Ver fichero

@ -15,7 +15,7 @@ typedef struct KeyNode_r{
struct KeyNode_r *next;
} KeyNode;
bool isNotLocked(KeyNode *LockedHead, int KeyIx){
bool isNotCurLocked(KeyNode *LockedHead, int KeyIx){
KeyNode *temp = LockedHead;
while (temp != NULL){
if (temp->KeyIx == KeyIx)
@ -62,7 +62,7 @@ ERL_NIF_TERM tryLock(ErlNifEnv *env, int, const ERL_NIF_TERM argv[]){
while (enif_get_list_cell(env, allList, &head, &allList)){
KeyIx = enif_hash(ERL_NIF_INTERNAL_HASH, head, HashSalt) % LockSize;
KeyNode OneKeyNode = {KeyIx, LockedHead};
if (isNotLocked(LockedHead, KeyIx)){
if (isNotCurLocked(LockedHead, KeyIx)){
if (lockOne(env, &ThePid, KeyIx, Val)){
LockedHead = &OneKeyNode;
}else{

Cargando…
Cancelar
Guardar