Kurs i

Threads Programming using Modern C++

Buggar i fler-trådade program anses ofta vara det besvärligaste man kan råka ut för som programmerare. Faktum är att det generella rådet är att inte stoppa in dem från början.

Om man tycker det rådet är aningen orealistiskt, så är det näst bästa att programmera enligt ett antal väl beprövade programmerings-idiom som undviker problemen. I denna kurs, fokuserar vi på just den strategin.

Detta får du lära dig på kursen
  • Programmera med POSIX Threads direkt i C
  • Programmera med trådar i C++, genom att kapsla in C API:et
  • Programmera med trådar i nya C++14
  • Förstå och hantera problemområden som critical-sections, race-conditions och deadlocks
  • Använda mutex och conditions både i POSIX och C++11
  • Förstå och använda futures & promises i nya C++11
  • Förstå hur du på bästa sätt använder mutex och condition variabler i såväl C, C++ som nya C++11
  • Förstå hur du använder futures och promises för att implementera client-server trådar
  • Kunna skriva en flertrådad TCP server
Innehåll

Background and Overview

  • Vad är skillnaden mellan concurrent och parallel
  • Kort om utvecklingen av olika språk och operatorer för att hantera concurrency
  • Vad är en tråd och hur skiljer sig denna från en process
  • Översiktligt om virtual-adress-space organization
  • Översiktligt om vad som händer när en funktion anropas och varför det har intresse för förståelsen av trådar

POSIX Threads

  • Översikt av POSIX Threads C API
  • Hur man skapar en POSIX thread i ren C
  • Hur man kapslar in detta i C++
  • Hur C++11 gör allt detta så mycket bättre

The Critical Section Problem

  • Praktiskt genomgång av hur problemet uppträder och varför, samt hur man förhindrar det
  • POSIX mutex locks
  • Rekursiva lås och varför de är viktiga
  • Mutex locks in C++11

The Race-Condition Problem

  • Praktiskt genomgång av hur problemet uppträder och varför, samt hur man förhindrar det
  • POSIX condition variables
  • Condition variables in C++11
  • Using unique locks and multi-locks
  • Vi skriver den minsta möjliga kodmängden för att korrekt överföra data från en tråd till en annan

The Deadlock Problem

  • Begreppet resurs
  • Svältning av resurser
  • Livelock
  • Deadlocks och hur man hanterar dem

Semaphores and other Synchronization Operations

  • POSIX semaphores
  • Skillanden mellan memory-based och file-based semaphores
  • Read/Write locks
  • Barriers

Uni-directional Message Passing

  • Vi implementerar en generellt användbar meddelande-kö och tittar på alternativen
  • Message queue support in C++11
  • Hur smarta pekare kommer in som en viktig komponent i denna mix

Bi-directional Message Passing

  • Futures & promises
  • Extended rendezvous
  • N clients & 1 server
  • 1 client & N servers

TCP Stream Sockets

  • Hur man använder TCP sockets i C/C++
  • C++ TCP socket libraries
  • Client socket communication
  • Server socket realization
  • Implementation of a multi-threaded TCP server
SnabbFakta
Namn
Threads Programming using Modern C++
Längd
3 dagar
Nivå
Advanced
Målgrupp
Erfarna C++ programmerare
Förkunskaper
Vana att programmera i modern C++ 11/14, dock ej POSIX eller C++11 Threads
Teknisk miljö
  • C++14 compliant C++ compiler
  • A decent IDE such as Jetbrains CLion
  • Ubuntu Linux or Cygwin
Relaterade Kurser
KursLängdNivå
Systems Programming using Modern C++3 dagarAdvanced
Intermediate Modern C++ 3 dagarIntermediate
C++ 11/14 for C++ Programmers2 dagarIntermediate
Modern C++ Basics5 dagarBeginner
Modern C++ for Java Developers 4 dagarBeginner
Schemalagd Kurs

Pris

16000 kr + moms

Aktuella KursDatum
Startdatum Plats
27 feb 2017 Stockholm City
3 apr 2017 Stockholm City
8 maj 2017 Stockholm City
22 maj 2017 Stockholm City
13 jun 2017 Stockholm City
Företagsintern Kurs

Om du beställer en företagsintern kurs kommer vi till er och håller kursen i era egna lokaler. Priset bestäms av vår prismodell och baseras på antalet kursdagar, antalet deltagare, samt i förekommande fall resa och logi.

Prisexempel för NN deltagare

PPP kr + moms

Antal
Område

Läs mer om vår prismodell och beställningsvillkor här .