13.07.2015 Views

Primitives pour la programmation concurrente sur Windows ... - EPFL

Primitives pour la programmation concurrente sur Windows ... - EPFL

Primitives pour la programmation concurrente sur Windows ... - EPFL

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!