Primitives pour la programmation concurrente sur Windows ... - EPFL
Primitives pour la programmation concurrente sur Windows ... - EPFL
Primitives pour la programmation concurrente sur Windows ... - EPFL
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Attente multiple il existe parfois plusieurs conditions d'attenteDWORD WaitForMultipleObjects(DWORD nCount,CONST HANDLE *lpHandles,BOOL WaitAll,DWORD durée); /* INFINITE est utilisable nCount est au max. MAXIMUM_WAIT_OBJECTS (64) on peut attendre un seul ou tous return_value – WAIT_OBJECT_0 (ouWAIT_ABANDONED_0) indique le déclencheur WAIT_FAILED si erreur (GetLastError donne les détails)Informatique du temps réel <strong>Primitives</strong> de NT 9© J.-D. Decotignie, 2001Synchronisation sections critiquesVOID Initialize/Delete/Enter/LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection); permettent <strong>la</strong> création, <strong>la</strong> destruction d'une section critique permettent d'entrer et sortir d'une section critique n'est pas un objet du noyau mais une variable n'est pas détruit si le thread est détruit attente multiple impossible seulement utilisable <strong>pour</strong> des threads dans le même processInformatique du temps réel <strong>Primitives</strong> de NT 11© J.-D. Decotignie, 2001Attente multiple (2) cas d'un thread qui attend un messageDWORD MsgWaitForMultipleObjects(DWORD nCount,CONST HANDLE *lpHandles,BOOL WaitAll, // un ou tousDWORD durée, // INFINITE est utilisableDWORD dwWakeMask); dwWaitMask indique le type de message attendu (hot key,mouse, key, mouse button, timer, post message, send message,...)Informatique du temps réel <strong>Primitives</strong> de NT 10© J.-D. Decotignie, 2001Synchronisation (2) mutexHANDLE CreateMutex(LPSECURITY_ATTRIBUTES LpMutexAttributes,BOOL InitialOwner,LPCTSTR lpName); /* nom de désignation OpenMutex <strong>pour</strong> obtenir une poignée <strong>sur</strong> un existant (Msg)WaitForSingle/MultipleObject(s) <strong>pour</strong> entrer dans <strong>la</strong>section critique ReleaseMutex <strong>pour</strong> en sortir CloseHandle(); passe automatique en non signalé en cas d'arrêt du thread sansfaire ReleaseMutexInformatique du temps réel <strong>Primitives</strong> de NT 12© J.-D. Decotignie, 2001