Savez vous si il est possible d'obtenir la valeur du count d'un s�maphore (nomm� en l'occurence) sous windows ? (sans le modifier)
J'arrive pas � trouver de moyen...
Merci.
Version imprimable
Savez vous si il est possible d'obtenir la valeur du count d'un s�maphore (nomm� en l'occurence) sous windows ? (sans le modifier)
J'arrive pas � trouver de moyen...
Merci.
Bonjour
Ce n'est pas possible (� ma connaissance) sans l'acqu�rir
LONG count;
Mais de toute fa�on le temps de s'en servir c'est d�j� peut �tre faux.Code:
1
2
3
4
5
6
7
8
9 if( WAIT_TIMEOUT == WaitForSingleObject(hSemaphore, 0) ) { Trace("il y quelques instants il n'y avait plus de resources disponibles"); } else { ReleaseSemaphore(hSemaphore, 1, &count); Trace("il y quelques instants il restait %d resources disponibles", ++count); }
Passo
En effet, lire le count d'un s�maphore ne sert � rien car il peut �tre modifi� entre le moment o� tu le lis et le moment o� tu agis...
Bon certes il faut se m�fier de ce que fait le s�maphore apres l'avoir consult�, mais dans mon cas c'�tait prot�g� (par un autre)
Le moyen de consulter sa taille est ReleaseSemaphore avec un releasecount de zero. Ca ne modifie pas le compteur et renvoie sa valeur dans un 3eme param�tre de sortie.
Bon ceci �tant, dans mon exemple, je me suis aper�u que �a posait probl�me quand j'ai besoin de 'd�cr�menter' la valeur (l'inverse du release) de plusieurs crans d'un coup. (le reseter en cas d'erreur de synchro en fait)
Du coup comme j'avais une m�moire partag�e sous la main, j'ai mis un int dedans et j'ai transform� le s�maphore en mutex.
Mais bon �a fait 2 objets syst�mes l� ou un s�maphore un peu plus souple aurait suffi.