CPU modern memiliki banyak core, dan C++ menyediakan alat untuk memanfaatkannya. Kita memakai std::thread, mutex, condition_variable, atomic, dan future, lalu menutup dengan jthread serta parallel algorithms untuk pekerjaan skala besar.

# Proses dan Thread

Perbedaan proses dan thread, memori bersama di dalam satu proses, konteks switching, dan kapan multithreading tepat dipakai.

Buka →
# std::thread

Membuat thread dari fungsi dan lambda, mengirim argumen by value dan by reference dengan std::ref, join(), serta bahaya detach dan std::terminate.

Buka →
# Siklus Hidup Thread

State thread dari baru sampai selesai, makna joinable vs joined, hardware_concurrency(), dan identitas thread lewat get_id().

Buka →
# std::mutex

Data race tanpa mutex, critical section, dan pola lock()/unlock() yang benar dengan std::mutex pada penghitung bersama.

Buka →
# lock_guard dan unique_lock

RAII locking dengan lock_guard, fleksibilitas unique_lock (defer, owns_lock, timed), serta shared_mutex dan shared_lock untuk banyak pembaca.

Buka →
# Deadlock

Empat kondisi deadlock, pola dua mutex dengan urutan berbeda yang saling mengunci, dan pencegahannya dengan std::lock serta scoped_lock.

Buka →
# Condition Variable

Menunggu kondisi tanpa busy waiting: condition_variable, wait dengan predicate, spurious wakeup, notify_one vs notify_all, dan pola producer-consumer.

Buka →
# Semaphore, Latch, dan Barrier

Alat sinkronisasi modern C++20 dalam satu tur: sinyal berbasis penghitung, titik kumpul sekali pakai, dan titik kumpul berulang, lengkap dengan panduan memilih di antara mereka.

Buka →
# Operasi Atomik

std::atomic untuk penghitung bersama: fetch_add, load, store, exchange, compare_exchange, atomic_flag, dan kapan atomic cukup tanpa mutex.

Buka →
# Model Memori C++

Happens-before secara ringan, memory_order (seq_cst default, acquire/release, relaxed), dan demo deterministik pasangan release-acquire.

Buka →
# Data Race

Definisi data race menurut standar C++, kenapa ia undefined behavior, deteksi dengan ThreadSanitizer, dan pola desain yang bebas data race.

Buka →
# future dan promise

Mengirim hasil dan exception antar thread lewat kanal satu arah std::promise dan std::future, plus shared_future untuk banyak pembaca.

Buka →
# std::async

Menjalankan tugas dan mengambil hasilnya: launch policy async vs deferred, exception yang diantar future, dan catatan portabilitas policy default.

Buka →
# Pola Thread Pool

Merakit thread pool mini dari mutex, condition variable, dan future: antrian tugas, worker loop, shutdown bersih, serta cara memilih ukuran pool.

Buka →
# jthread dan stop_token

std::jthread dengan join otomatis, penghentian kooperatif lewat stop_token dan stop_source, serta stop_callback sebagai reaksi sinyal.

Buka →
# Parallel Algorithms

Execution policy pada algoritma standar (std::execution::par), ketergantungan TBB di GCC, dan alternatif teruji: partisi manual dengan std::thread.

Buka →
# Debugging Program Konkuren

Menghadapi bug konkuren: heisenbug, logging disiplin, reduksi reproduksi, uji invariant, dan checklist desain program multithread yang aman.

Buka →