幾種鎖演算法的實現

2021-07-03 14:14:08 字數 1218 閱讀 6465



4種lock的實現:

每乙個lock帶有乙個狀態位,lock()與unlock()操作原子的改變狀態位。

false時可進入,true時spin。

public

class

taslock

implements

lock

}public

void

unlock

()}

defect:

taslock演算法的改進。

public class ttaslock implements lock();

if (! state.getandset(true))

return;}}

public

void

unlock

()}

while (state.get()){}是乙個改進,效果是先看一眼lock的狀態,當lock是false時,

再真正的執行state.getandset(true)

當state.getandset(true) 的return為false時,說明之前的確是false,於是獲得鎖,return。

否則回到while(true),再次嘗試獲得鎖。

defect:佇列鎖。

clhlock

void

initclhlock

()void

lock()}

void

unlock

()

note:
public

class

mcslock

implements

lock};}

...class

qnode

}

public

void

lock

()//將自己設為true然後spin,看似deadlock

}}public

void

unlock

() }

//右面有等待執行緒,則通知後面的執行緒

qnode.next.locked = false;

qnode.next = null;

}

note:

linux 讀寫鎖的幾種實現方式

一 使用互斥鎖和條件變數實現讀寫鎖 cpp view plain copy class readwrite lock void readlock void readunlock void writelock void writeunlock private mutex mtx condition v...

幾種排序演算法的實現

對陣列int a n 進行直接插入排序 void insertsort int a,int n r j 1 temp 完成下標為i的元素的排序 對陣列a n 進行折半插入排序 void insertsort int a,int n 折半查詢結束 移動元素 for j i j high 1 j a j...

幾種排序演算法的實現

氣泡排序演算法 param mutablearray 需要排序的陣列 選擇排序演算法 param mutablearray 需要排序的陣列 void selectionsortarray nsmutablearray mutablearray 3.快速排序演算法 oc 快速排序演算法 param a...