Skip to content

Latest commit

 

History

History
22 lines (17 loc) · 296 Bytes

File metadata and controls

22 lines (17 loc) · 296 Bytes

Swap

也叫Exchange或是XCHG,也是硬體支援的指令,邏輯跟TestAndSet一樣。

缺點:

  • 不滿足讓權等待
func Swap(a *bool, b *bool) {
	*a, *b = *b, *a
}
lock, old := false, true

for old {
    Swap(&lock, &old)
}
// critical section
lock = false