Concurrency and Multithreading with Modern C++ Workshop

All Tracks and Workshops : 1100 ILS + VAT
Modern C++ Workshop: 2300 ILS + VAT

Dates: 17.07.24 + 24.07.24 (2 days)

Concurrency and Multithreading with Modern C++

Objectives

  • Cover C++ memory model.
  • Covers multithreading features in C++17 (including C++14/11)
  • Covers Multithreading and Concurrency features in C++20.
  • Covers C++17 parallel standard algorithms.
  • Covers best practices and common pitfalls.

Audience

Software engineers with hands-on experience using C++11/14/17. Prior multithreading experience is not required but is recommended.

Delivery

  • This course will combine theory and hands-on live code demonstration.
  • Attendees will practice learnt concepts and techniques by solving specially designed exercises.
  • Hands-on practice is ~30% of each session time.

Schedule

  • 2 days

Syllabus

  1. Introduction to Multithreading and Concurrency
    1. What is parallelism?
    1. What is concurrency?
    1. Thread vs. Process
    1. Review of modern CPUs and memory architecture
    1. Amdhal Law.
  2. std::thread
    1. What is a thread – OS perspective
    1. Starting new threads
    1. Passing arguments to new threads
    1. Background threads
    1. Getting results from new threads
    1. Join and dispatch
    1. Yield and sleep
  3. Sharing State
    1. Problems with sharing state
    1. Threads and global variables
    1. Threads and thread_local variables
  • Atomic operations.
    • Once flags
    • Race conditions.
    • Synchronization with mutex
    • Mutex types
  • Mutex locks
    • Working with RAII-based locks
    • Unique locks
    • Deadlocks
    • Deadlocks avoidance
  • Multiple Readers Single Writer Problem
    • Shared Locks
    • Why no upgradable locks
    • Bias and Fairness
  • Condition Variables
    • Condition variables and mutex
    • Implementing waitable data structures.
    • Spurious wakeup and avoidance
  • Async Processing
    • std::async and std::future
    • Packaged tasks
  • C++20 Joinable Thread
    • jthread
    • Stop tokens
  • Additional Synchronization Tools
    • Counting semaphores
    • Barrier
    • Latch
  • Parallel standard algorithm in C++17
    • Execution policies in C++17 and C++20
    • What algorithms are available?
    • Demo with Intel Thread Building Blocks
Conference Proposal (#3)

Registration Form For STP Dec 2024 Event

 

This form will be filled out by the company representative approved to commit on behalf of the company for all matters


Choose the Tracks for the registering Attendees

If there are several participants on your behalf, you can add fields to register the respective participants by clicking on the plus sign


Confirmation of the company / Attendee committing to payment


+ VAT ( In ILS)
Conference Proposal (#3)

Registration Form For STP Dec 2024 Event

 

This form will be filled out by the company representative approved to commit on behalf of the company for all matters


Choose the Tracks for the registering Attendees

If there are several participants on your behalf, you can add fields to register the respective participants by clicking on the plus sign


Confirmation of the company / Attendee committing to payment


+ VAT ( In ILS)