[so] aflarea valorii unui semafor pe windows

Daniel Baluta daniel.baluta at gmail.com
Tue Aug 26 16:02:47 EEST 2008


2008/8/26 Cristina Basescu <cristina.basescu at gmail.com>:
> Mersi pt raspuns, stiam ca se poate afla valoarea semaforului cu
> ReleaseCount, insa param de la release tr sa fie o val strict pozitiva si
> asta modifica val semaforului. Nu e ceea ce caut.

Daca valoarea cu care incrementezi semaforul + val crt  e mai mare
decat valoarea maxima a semaforului apelul esueaza ,
starea semaforului nu se modifica insa obtii vechea valoarea.

Totusi e nenatural sa incerci sa obtii valoarea unui semafor. Daca ai
nevoie de valoarea lui trebuie sa folosesti o variabila pe care o
incrementezi si o decrementezi atomic atunci cand se fac operatii pe
semafor.

> Am gasit ca exista in ntdll.dll o functie NTQuerySemaphore, am incercat sa o
> folosesc si imi intoarce mereu 0.. intrebarea e ar trebui sa mearga functia
> aia?

Nu stiu daca ar trebui sa iti mearga. Oamenii astia zic ca da.

http://www.codeguru.com/cpp/w-p/win32/article.php/c1423/

Probabil ca iti trebuie sa vezi daca o coada e goala sau nu la Tema 4.

Poti sa folosesti ceva de genul:

 struct Queue{
      HANDLE sem ;
      int size; //...
 };


Dan.

>
> Cristina
>


> 2008/8/26 Daniel Baluta <daniel.baluta at gmail.com>
>>
>> http://msdn.microsoft.com/en-us/library/ms685071(VS.85).aspx
>>
>> Teoretic daca pui  lReleaseCount = 1, atunci PreviousCount-1 ,
>> e ceea ce cauti.
>>
>> Insa nu-ti recomand abordarea asta.
>>
>> Dan.
>>
>>
>> 2008/8/26 Cristina Basescu <cristina.basescu at gmail.com>:
>> > Salut,
>> >
>> > stie cineva cum se poate afla valorea unui semafor pe windows?
>> >
>> > Multumesc,
>> > Cristina
>> >
>> > _______________________________________________
>> > so mailing list
>> > so at cursuri.cs.pub.ro
>> > http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>> >
>> >
>> _______________________________________________
>> so mailing list
>> so at cursuri.cs.pub.ro
>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
>
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
>


More information about the so mailing list