Intrati in legatura
 Durata 28 ore

Schița de curs

Provocări și probleme de concurență

  • Limitări hardware ale platformelor - fire hardware, conducte, coerența cache
  • Concepte elementare legate de programarea multi-thread (corectitudinea programului multi-thread, viața, foametea, blocarea, cursa, atomicitatea, modele de coerență, taxonomia lui Flynn)
  • Mecanisme disponibile în C++ pentru implementarea multi-thread și multi-proces
  • Implementarea bibliotecii standard - elemente de la C++14 până în prezent (C++2a)
  • Implementarea disponibilă în Boost - diferențe față de biblioteca standard

Procese și fire de execuție

  • Aplicații multi-proces versus multi-thread
  • Sistemul de operare și firele de execuție (scurtă trecere în revistă a implementărilor disponibile)
  • Mecanisme de sincronizare a proceselor și firelor de execuție
  • Implementarea structurală a sincronizării
  • Specificul implementării multi-thread în abordarea orientată pe obiecte (rolul modelului RAII)

Modelul de memorie în limbajul C++

  • Obiecte și locații în memorie
  • Programarea operațiilor și forțarea lor
  • Relații: sincronizare, precedență, ordonare a operațiilor pentru acțiuni atomice, secvențe de eliberare
  • Bariere de memorie
  • Operații atomice

Gestionarea firelor de execuție în standardul C++14 și versiuni mai noi

  • Clasa std::thread și lansarea firelor de execuție
  • Identificarea firului de execuție
  • Atasarea și detașarea firului de execuție
  • Fire de execuție și containere standard
  • Gestionarea excepțiilor în firele de execuție C++14

Excludere mutuală și secțiuni critice

  • Reguli simple de excludere mutuală
  • Concepte (tipuri) de obiecte de blocare disponibile
  • Introducere rapidă în gestionarea timpului în C++14 (biblioteca chrono)
  • Clasele std::mutex, std::timed_mutex, std::shared_mutex și derivate
  • Modelul RAII în gestionarea blocurilor (std::lock_guard, std::unique_lock)
  • Blocări dependente și amânate (std::lock)
  • Proprietatea și coproprietatea blocurilor și firelor de execuție
  • Problema cititor-scriitor
  • Inițializare unică
  • Memorie locală (privată) a firului de execuție (std::thread_local)

Blocări și sincronizare a firelor de execuție

  • Operații pe semafoare
  • Blocări recursive
  • Blocări cu nivel de blocare definit
  • Variabile de decizie și colaborarea cu blocarea
  • Implementarea barierelor active și pasive (Idle Waits, Busy Waits)
  • Reluarea acțiunii firelor de execuție
  • Comunicarea între fire de execuție (modelul Actor și CSP)

Sarcini asincrone

  • Evenimente asincrone și gestionarea lor
  • Viitoare (future)
  • Promisiuni (promise)
  • Sarcini pregătite (packaged_task)

Tipuri atomice

  • Tipuri atomice standard
  • Steag atomic universal (std::atomic_flag)
  • Șablonul clasei "std::atomic<T>" și specializările sale
  • Funcții utilitare (lente) ale tipurilor std::atomic

Specificul proiectării API-urilor multi-thread

  • Proiectarea structurilor folosind blocări - blocări cu granulație grosieră și fină
  • Performanța codului concurent - tehnici de estimare și măsurare
  • Partiționarea datelor
  • Scalabilitatea soluțiilor
  • Gestionarea erorilor și a situațiilor excepționale în arhitectura aplicațiilor

Testarea și depanarea aplicațiilor multi-thread

  • Revizuirea codului din perspectiva operațiilor multi-thread
  • Specificul testării aplicațiilor multi-thread
  • Teste unitare
  • Creșterea probabilității situațiilor de criză pentru teste
  • Metode formale de testare a aplicațiilor multi-thread
  • Modele de arhitectură a aplicațiilor multi-thread și testarea și depanarea (revizuire)

Gestionarea avansată a firelor de execuție

  • Fire de execuție dependente (modelul Saga)
  • Evitarea concurenței în accesul la date
  • Oprire și întrerupere controlată a firului de execuție
  • Întreruperea apelurilor de blocare
  • Gestionarea întreruperilor
  • Furtul sarcinilor
  • Întreruperea sarcinilor în timpul finalizării aplicației

Modele de proiectare multi-thread

  • Tipuri și scopul modelelor multi-thread
  • Domeniul de aplicare al modelelor
  • Pool de fire de execuție (Thread Pool)
  • Modelul obiectului activ (Active Object)
  • Coadă sigură pentru fire de execuție (Thread Safe Queue)
  • Modelul producător-consumator (Producer Consumer)
  • Modelul monitor (Monitor)
  • Securitatea multi-thread a modelelor GoF

Cerințe

  • Abilitatea de a utiliza instrumente de construire a software-ului în C++ în mediul GNU/Linux și/sau MS Windows
  • Cunoașterea conceptelor de programare în C++ (paradigma procedurală și orientată pe obiecte) la un nivel avansat și intermediar
  • Cunoașterea conceptelor de creare a codului generalizat (șabloane)

Numărul de participanți


Pret per participant

Mărturii (1)

Cursuri viitoare

Categorii înrudite