Section 16/161 menit

16. Ringkasan & Decision Guide

16. Ringkasan & Decision Guide

Kapan Pakai Fitur Lanjutan

Kebutuhan Fitur
Pass context tanpa parameter di seluruh call chain @TaskLocal
Logging/tracing yang otomatis tersebar @TaskLocal
DI di tests tanpa ubah signature @TaskLocal dengan .withValue()
Actor di event loop eksternal Custom SerialExecutor
Bounded thread pool untuk task tree TaskExecutor (Swift 6)
Cleanup resource saat task di-cancel withTaskCancellationHandler
Streaming incremental data Custom AsyncSequence
Pagination otomatis dengan prefetch Custom AsyncIteratorProtocol
Isolasi resource khusus (DB, audio) Custom @globalActor
Cross-process atau cross-machine actor distributed actor
High-frequency callback bridge UnsafeContinuation (hati-hati!)
Timeout yang bisa di-test Generic Clock parameter

Warning Signs yang Butuh Fitur Ini

swift
□ Semua fungsi di sebuah module punya parameter "requestID" atau "traceID" → TaskLocal
□ Actor method perlu akses resource yang hanya aman dari thread tertentu → Custom Executor
□ Cache/resource yang expensive di-initialize ulang karena actor reentrancy bug → Pelajari reentrancy
□ Pagination code manual dengan index dan bool flags → Custom AsyncSequence
□ Test yang butuh wait/sleep real untuk time-based logic → Generic Clock
□ Continuation yang di-resume tapi kadang tidak (memory leak) → withTaskCancellationHandler

Fitur-fitur ini bukan untuk dipakai di setiap project. Mulai dengan API standar — async/await, Task, actor, AsyncStream. Hanya reach ke advanced API ketika foundational tools tidak cukup dan ada kebutuhan yang nyata dan terukur. Advanced concurrency yang ditulis tanpa pemahaman mendalam seringkali lebih berbahaya dari code synchronous biasa.

Langkah berikutnya: praktekkan dengan menulis @TaskLocal untuk logging di project nyata terlebih dahulu — ini yang paling sering dibutuhkan. Setelah itu explore Custom Executor jika ada integrasi dengan framework eksternal.