Section courante

A propos

Section administrative du site

WinWaitEventSem

Fenêtre : Attendre un événement sémaphore
PMWIN.DLL os2.h

Syntaxe

APIRET WinWaitEventSem( HEV hevSemaphore, ULONG ulTimeout );

Paramètres

Nom Description
hevSemaphore Ce paramètre permet d'indiquer le Handle du sémaphore à relâché.
ulTimeout Ce paramètre permet d'indiquer le nombre de millisecondes que la fonction doit attendre avant de retourner. Toutefois, on peut utiliser les valeurs suivantes pour appeler des fonctions spéciales :
Constante Valeur Description
SEM_IMMEDIATE_RETURN 0 Cette valeur permet d'indiquer que la fonction retourne immédiatement indépendamment de savoir si la sémaphore est posté.
SEM_INDEFINITE_WAIT -1 Cette valeur permet d'indiquer que la fonction est bloqué indéfiniment jusqu'à ce que la sémaphore soit posté.

Retour

Valeur Constante Description
0 NO_ERROR Cette valeur permet d'indiquer que l'opération s'est correctement effectué
6 ERROR_INVALID_HANDLE Cette valeur permet d'indiquer que la valeur du hmuxSemaphore ne point pas sur un sémaphore valide.
8 ERROR_NOT_ENOUGH_MEMORY Cette valeur permet d'indiquer que la limite de mémoire système est atteinte.
95 ERROR_INTERRUPT Cette valeur permet d'indiquer qu'une erreur d'interruption s'est produite.
640 ERROR_TIMEOUT Cette valeur permet d'indiquer que l'appelant est bloqué par ulTimeout millisecondes mais le propriétaire de sémaphore ne peut pas obtenir de limite de temps, donc le temps est expiré.

Description

Cette fonction permet de bloquer jusqu'à ce que l'événement de sémaphore spécifié est été posté.

Exemple

Voici un simple exemple montrant comme appeler cette API avec WatCom C++ for OS/2 :

  1. #define INCL_DOSERRORS
  2. #define INCL_WINMESSAGEMGR
  3. #include "os2.h"
  4. #include "stdio.h"
  5.  
  6. void main(void) {
  7.     HEV hevMySemaphore;
  8.     switch(WinWaitEventSem(hevMySemaphore, -1)) {
  9.         case NO_ERROR: printf("Tout va bien !");break;
  10.         case ERROR_INVALID_HANDLE: printf("Erreur : La valeur du hmuxSemaphore ne point pas sur un sémaphore valide.");break;
  11.         case ERROR_NOT_ENOUGH_MEMORY: printf("Erreur : La limite de mémoire système est atteinte.");break;
  12.         case ERROR_INTERRUPT: printf("Erreur : Une erreur d'interruption s'est produite.");break;
  13.         case ERROR_TIMEOUT: printf("Erreur : L'appelant est bloqué par ulTimeout millisecondes mais le propriétaire de sémaphore ne peut pas obtenir de limite de temps, donc le temps est expiré.");break;
  14.     }
  15. }

Voir également

Langage de programmation - C pour OS/2 - DosCloseEventSem
Langage de programmation - C pour OS/2 - DosCreateEventSem
Langage de programmation - C pour OS/2 - DosOpenEventSem
Langage de programmation - C pour OS/2 - DosPostEventSem
Langage de programmation - C pour OS/2 - DosQueryEventSem
Langage de programmation - C pour OS/2 - DosResetEventSem
Langage de programmation - C pour OS/2 - DosWaitEventSem
Système d'exploitation - OS/2 - Introduction

Références

OS/2 Warp Presentation Manager API, Edition John Wiley, Joel Barnum, 1995, ISBN: 0-471-03873-3, page 74

Dernière mise à jour : Lundi, le 19 juillet 2010