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