Section 12/132 menit
Ringkasan Konsep Kunci
Ringkasan Konsep Kunci
| Konsep | Mengapa Ada | Kapan Digunakan | Kapan Tidak Digunakan |
|---|---|---|---|
actor |
Mencegah concurrent mutation pada reference type | Shared mutable state lintas threads | Value type, single-thread access, butuh inheritance |
@MainActor |
UIKit tidak thread-safe | UI layer, ViewModel dengan @Published | Business logic, network/DB layer |
nonisolated |
Menghindari overhead hop untuk data immutable | Method hanya akses let properties |
Jika ada akses ke var property |
Sendable |
Membuktikan ke compiler bahwa nilai aman dikirim lintas isolation | Semua nilai yang melewati isolation boundary | Tidak perlu eksplisit jika struct/enum dengan all-Sendable properties |
@unchecked Sendable |
Bridging ke legacy/C code yang sudah thread-safe | Manual synchronization yang terbukti benar | Jangan untuk menghindari compiler error tanpa alasan |
sending |
Transfer ownership tanpa Sendable | Pipeline processing, nilai yang tidak diakses lagi | Jika caller masih butuh nilai setelah call |
isolated param |
Utility function yang perlu akses actor state | Helper function terkait actor, testing | Jika function butuh dua actor berbeda sekaligus |
@globalActor |
Satu domain isolation untuk banyak tipe | Layer terpisah (DB, Network) yang butuh shared domain | Jika hanya satu instance — gunakan actor biasa |
Task |
Unit kerja async yang mewarisi isolation | Default untuk semua async work | Jarang perlu hindari, ini tool utama |
Task.detached |
Task benar-benar independent | Tugas yang tidak boleh di-cancel oleh parent | Hampir semua kasus — Task {} sudah cukup |