Sari la conținut
Modulul 7

Concurență

Scrieți corect, eficient multithreaded C++ — fire, sincronizare, atomic și algoritmi paraleli.

Fire și sincronizare

  1. std::thread, std::jthread & Thread Management

    Învățați să creați și să gestionați fire cu std::thread și std::jthread de la C++20. Înțelegeți alăturarea vs detașarea, anularea cooperativă cu jetoane de oprire, stocarea locală a firelor și gestionarea excepțiilor peste granițele firelor.

  2. Mutexuri, încuietori și secțiuni critice

    Primitive de sincronizare master: mutex, lock_guard, unique_lock, scoped_lock, shared_mutex. Aflați cum să protejați datele partajate, să preveniți blocajele și să înțelegeți diferența dintre cursele de date și condițiile de cursă.

  3. Variabile de condiție și producător-consumator

    Use condition variables to efficiently coordinate threads. Build a thread-safe producer-consumer queue, handle spurious wakeups, and avoid the lost wakeup problem.

Async, Atomics & Paralelism

  1. std::async, std::future și std::promise

    Utilizați abstracții de concurență de nivel superior: lansați sarcini asincrone cu std::async, preluați rezultatele cu std::future și setați manual valori sau excepții cu std::promise.

  2. Operații atomice și ordonarea memoriei

    Înțelegeți programarea fără blocare cu std::atomic. Comandări de memorie master (relaxat, achiziționare, eliberare, seq_cst), implementați un spinlock cu atomic_flag și învățați modelul de comparare și schimbare (CAS).

  3. Algoritmi paraleli și politici de execuție

    Utilizați STL paralel C++17 pentru a paraleliza sortarea, transformarea și reducerea cu politicile de execuție. Înțelegeți când paralelismul ajută, legea lui Amdahl și designul practic al piscinei cu fire.