Kurs i

POSIX and C11 Threads Programming using 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
  • Programmera med C11 Threads
  • Förstå klassiska concurrency problem
  • Hantera mutex och condition variabler
  • Använda semaforer
  • Hantera atomära variabler
Innehåll

Introduction to Threads and Concurrency

  • Current vs. parallel
  • Scheduling
  • Synchronization
  • Virtual adress space organization
  • Overview of how a function-call is performed and why it's relevant to threads

POSIX Threads

  • Overview of the POSIX Threads C API
  • Creating a thread
  • Passing paramaters to a new thread
  • Configuring threads, like setting the stack-size

The Critical Section Problem

  • Understanding the problem and its solution
  • Three conditions for the critical-section problem
  • POSIX mutex variables
  • Configuration
  • Avoiding self-deadlock
  • Adapting for shared memory

The Race-Condition Problem

  • Understanding the problem and its solution
  • POSIX condition variables
  • Configuration
  • Handling timeouts
  • Adapting for shared memory
  • Understanding monitor semantics
  • The minimum amount of code to safely transfer data from one thread to another

The Deadlock Problem

  • The concept resource
  • Understanding the problem and its solution
  • Four conditions for the deadlock problem
  • Preventing deadlocks
  • Detection of deadlocks

Synchronization and Other Data-Types

  • Read/Write locks
  • Barriers
  • Thread-local storage

Semaphores

  • POSIX semaphores
  • Memory-based vs. file-based semaphores

A C11 Primer

  • Evolution of the C languages
  • C11 highlights
  • Type-generic macros
  • Anonymous structs and unions
  • Static assertions
  • Bounds-checking support

C11 Threads

  • Overview and background of C11 Threads
  • How C11 Threads differs from POSIX Threads
  • Creating threads in C11
  • Waiting for thread termination
  • Mutex variables
  • Condition variables
  • Thread specific data
  • Atomic (lock-free) variables
  • Lock free atomic operations
SnabbFakta
Namn
POSIX and C11 Threads Programming using C
Längd
2 dagar
Nivå
Advanced
Målgrupp
Tekniska C programmerare
Förkunskaper
Praktiska kunskaper i C programmering
Teknisk miljö
  • C11 compliant C compiler, such as gcc or clang
  • A decent IDE such as Jetbrains CLion
  • Ubuntu Linux or Cygwin
Relaterade Kurser
Kurs LängdNivå
Modern C Programming4 dagarBeginner
Linux Systems Programming using C 3 dagarAdvanced
Threads Programming using Modern C++ 3 dagarAdvanced
Schemalagd Kurs

Pris

14000 kr + moms

Vi ger 20% rabatt för tillkommande deltagare från samma företag på samma kurstillfälle. Läs mer om vår samma-företags-rabatt.

Just nu har vi inga kursdatum planerade för denna kurs. Vi lägger ut kursdatum löpande, så titta förbi denna sida litet senare.

Du kan också välja att prenumerera på vårt nyhetsbrev för att bli notifierad om nya kursdatum.

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.