Application, process et thread...

Et tout ce qui en découle !

 

Introduction

  • Qu'est ce qu'une application, un process et un thread ?

Les threads

  • Gestion des threads avec les fonctions CreateThread(), TerminateThread() ou la fin normal d'un thread
  • Mettre en sommeil un thread Sleep() et SleepEx()
  • Suspendre et résumer un thread
  • Priorité des threads

Communication entre threads

  • Communication thread vers une fenêtre et d'un thread vers un thread par message :
    SendMessage(), PostMessage(), PostThreadMessage(), PeekMessage et GetMessage()

Sections critiques et les exclusions mutuelles (mutex)

  • Comment gérer l'accès aux mêmes variables entre différents threads d'un même processus
    sections critiques:InitializeCriticalSection(), EnterCriticalSection(), LeaveCriticalSection() et DeleteCriticalSection().
  • Comment gérer l'accès à différentes ressources entre différents threads de différents processus ou encore n'avoir qu'une seule instance de notre application (CreateMutex, OpenMutex et ReleaseMutex).

Les sémaphores

  • Comment limiter à un certain nombre l'accès à une ressource :
    CreateSemaphore(), OpenSemaphore() et ReleaseSemaphore().

Les évènements

  • Comment synchroniser des tâches:
    CreateEvent(), OpenEvent(), SetEvent(), ResetEvent().

Les timers

  • Comment réveiller un thread après un temps écoulé:
    CreateWaitableTimer(), OpenWaitableTimer(), SetWaitableTimer(), CancelWaitableTimer().


Fonctions d'attentes

  • Ces fonctions permettent de synchroniser des threads, fort utile par exemple
    • pour attendre la terminaison de tous les Threads,
    • ou encore pour attendre "l'autorisation d'accès à un mutex ou sémaphore",
    • ou la réception d'un évènement,
    • ou enfin le déclenchement d'un timer.

La classe de priorité

 

Remarque:Pour ceux qui connaissent déjà Unix, vous allez trouver ici quelques similitudes avec le system V IPC : Communications inter-processus. Tout comme au temps du DOS, Microsoft s'est fortement inspiré du monde Unix... Le paramètrage (la non portabilité oblige) n'est pas le même, mais l'idée l'est.