[so] P(n) pe Windows

Cosmin Arad so@atlantis.cs.pub.ro
Mon, 17 Nov 2003 15:02:54 -0800 (PST)


Salut,

Cred ca unii dintre voi ati abordat gresit problema cu
P(n) in Windows. Daca protejezi semaforul cu un mutex
si faci n operatii WaitForSingleObject dupa care
eliberezi mutexul se intampla serializarea operatiilor
P. 
De exemplu pentru un semafor cu valoarea 6 pe care se
fac operatiile P(7), P(2), P(2), P(2) din 4 threaduri
diferite, operatiile P(2) vor astepta dupa P(7) care
tine mutexul asociat semaforului, desi nu ar trebui sa
astepte.

Am pus la
http://cs.pub.ro/~so/Laboratoare/Semaphore.zip
o propunere de semafor generalizat pe Windows cu
operatiile P(n), V(n) si WaitZero().

Semaforul poate fifolosit cu threaduri, asigura
fairness si nu serializeaza operatiile.

Cosmin


__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree