Skip to content

Latest commit

 

History

History
26 lines (20 loc) · 419 Bytes

File metadata and controls

26 lines (20 loc) · 419 Bytes

TestAndSet

或稱TestAndeSetLock;是由硬體提供的原子指令,用來實現互斥鎖。

缺點:

  • 不滿足讓權等待

實現:

很顯然,如果locktrue,FOR-LOOP會一直執行,直到lockfalse為止。

func TestAndSet(lock *bool) bool {
	old := *lock
	*lock = true
	return old
}
lock := false

for TestAndSet(&lock) {
}
// critical section
lock = false