Windows Multithread/Multicore-Programming


Who should attend?

Software engineers developing Windows applications that make use of the multithreading features of the Win32/Win64-API.

Pre-requisites:

A good working knowledge of C.

Duration:

3 days

Course Description:

This course covers the multithreading features of the Win32/Win64-API. It explains the differences between processes and threads, what their features are and how they can communicate and work together. Furthermore it details what must be done in terms of synchronisation to prevent typical multithreading problems like deadlocks and wrong results showing up from time to time. An additional focus of this course is to show why adding processing power in form of multicore processors in many cases does not lead to the expected results, and what needs to be done to exploit these dormant resources. 


Course Outline

Introduction

  • The Win32/64 API
  • Process and thread model
  • Memory management and virtual addressing
  • Windows objects and how they are used

Processes and Threads

  • Creation and termination
  • Priorities
  • Scheduling
  • Preemption
  • Time slicing

Synchronisation

  • Critical Sections
  • Mutexes
  • Semaphores
  • Events
  • Deadlocks
  • Interlocked functions

Inter Process Communication

  • Shared Memory (Memory Mapped Files)
  • Message Queues
  • Named pipes and Anonymous pipes

Multicore Performance Optimisations

  • CPU usage scenarios
  • False Sharing
  • Criteria for best performance results
  • OpenMP (outlook)

Debugging Techniques

Practical Exercises

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.