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.
Perbedaan proses dan thread, memori bersama di dalam satu proses, konteks switching, dan kapan multithreading tepat dipakai.
Buka → # std::threadMembuat 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 ThreadState thread dari baru sampai selesai, makna joinable vs joined, hardware_concurrency(), dan identitas thread lewat get_id().
Buka → # std::mutexData race tanpa mutex, critical section, dan pola lock()/unlock() yang benar dengan std::mutex pada penghitung bersama.
Buka → # lock_guard dan unique_lockRAII locking dengan lock_guard, fleksibilitas unique_lock (defer, owns_lock, timed), serta shared_mutex dan shared_lock untuk banyak pembaca.
Buka → # DeadlockEmpat kondisi deadlock, pola dua mutex dengan urutan berbeda yang saling mengunci, dan pencegahannya dengan std::lock serta scoped_lock.
Buka → # Condition VariableMenunggu kondisi tanpa busy waiting: condition_variable, wait dengan predicate, spurious wakeup, notify_one vs notify_all, dan pola producer-consumer.
Buka → # Semaphore, Latch, dan BarrierAlat 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 Atomikstd::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 RaceDefinisi data race menurut standar C++, kenapa ia undefined behavior, deteksi dengan ThreadSanitizer, dan pola desain yang bebas data race.
Buka → # future dan promiseMengirim hasil dan exception antar thread lewat kanal satu arah std::promise dan std::future, plus shared_future untuk banyak pembaca.
Buka → # std::asyncMenjalankan tugas dan mengambil hasilnya: launch policy async vs deferred, exception yang diantar future, dan catatan portabilitas policy default.
Buka → # Pola Thread PoolMerakit thread pool mini dari mutex, condition variable, dan future: antrian tugas, worker loop, shutdown bersih, serta cara memilih ukuran pool.
Buka → # jthread dan stop_tokenstd::jthread dengan join otomatis, penghentian kooperatif lewat stop_token dan stop_source, serta stop_callback sebagai reaksi sinyal.
Buka → # Parallel AlgorithmsExecution policy pada algoritma standar (std::execution::par), ketergantungan TBB di GCC, dan alternatif teruji: partisi manual dengan std::thread.
Buka → # Debugging Program KonkurenMenghadapi bug konkuren: heisenbug, logging disiplin, reduksi reproduksi, uji invariant, dan checklist desain program multithread yang aman.
Buka →