Comme on l'a vu précédemment, tout accès synchrone à un serveur doit être précédé par une réservation du serveur. On le fait avec la commande shmwait(). Exemple:
INTER > shmstat=shmwait()A ce moment, les sémaphores passent dans l'état suivant:
Sem #0 = 0 ncount=0 zcount=0 Sem #1 = 0 ncount=1 zcount=0 Sem #2 = 0 ncount=0 zcount=0On voit (Sem0 == 0)qu'aucun autre client ne pourra réserver le serveur et que le serveur est toujours en attente de commande (ncount1 == 1).
On peut faire une attente de réservation durant un temps limité. Dans ce cas on précise la durée en secondes comme argument de la fonction. Exemple d'attente de 30 secondes:
INTER > shmstat=shmwait(30)Lorsqu'un timeout survient, le status (ici shmstat) vaut 114 (c'est à dire 100 plus le code du signal SIGALRM (14).