Section 10/101 menit
10. Ringkasan
10. Ringkasan
Quick Reference
swift
// Counter sederhana — gunakan Atomic
let counter = Atomic(0)
counter.add(1, ordering: .relaxed)
// State dengan beberapa field — gunakan Mutex
let state = Mutex(MyState())
state.withLock { $0.field = newValue }
// Non-blocking attempt
if let result = mutex.withLockIfAvailable({ $0.value }) {
use(result)
}
// CAS untuk lock-free check-and-update
let (success, _) = atomic.compareExchange(
expected: oldValue,
desired: newValue,
ordering: .acquiringAndReleasing
)
Memory Ordering Cheat Sheet
| Situasi | Ordering |
|---|---|
| Counter statistik (tidak ada dependensi data lain) | .relaxed |
| Write data, lalu set flag "ready" | .releasing |
| Check flag "ready", lalu read data | .acquiring |
| CAS untuk lock implementation | .acquiringAndReleasing |
| Tidak yakin / butuh maximum safety | .sequentiallyConsistent |
Dibuat: 2026-05-08 | Swift 6.0 | import Synchronization