[so] [tema2] Windows vmchecker
Drutu Bogdan
bogdandrutu at gmail.com
Wed Apr 13 11:54:12 EEST 2011
2011/4/12 Adrian Scoica <adrian.scoica at gmail.com>:
> 2011/4/11 Stefan Munteanu <stef8803 at gmail.com>
>>
>>
>> Apreciez boldul pe "cearii", chiar sare in ochi cuvantul :D
>> Totusi, cred ca exista solutii mai elegante pentru sincronizare: de
>> exexmplu, un semafor.
>> Alternativ, ai putea sa renunti la sincronizare, creeand atat in
>> client si in server semaforul (O_CREAT creeaza doar daca nu exista).
>
> Daca am inteles bine, este vorba despre implementarea pe Windows.
>
> Solutia cu semafoarele va functiona in continuare, dar va trebui sa ai
> grija sa pastrezi semafoarele deschise in ambele procese pana cand nu
> mai ai nevoie de ele, deoarece in Windows ele se sterg daca nu mai
> exista nici un handler deschis la ele in vreun proces viu. Astfel, te
> poti trezi in urmatoarea situatie:
>
> Proces1:
> * deschide semafor
> * da release pe el (sem_count == 1)
> * inchide semafor (se distruge semaforul)
>
> Proces2:
> * deschide semafor (il recreaza, pentru ca s-a sters intre timp)
> * face wait pe el si asteapta la infinit (pentru ca s-a pierdut
> release-ul celalalt)
>
> Exista insa in continuare problema sincronizarii dintre client si
> gateway. Gateway-ul trebuie sa creeze mailslot-ul inainte ca client-ul
> sa il deschida pentru scriere. Deoarece clientul este gata implementat
> si nu are un mecanism de sincronizare la operatia de deschidere a
> cozii de mesaje... e cam random. Ma rog, mie mi-a mers aproape mereu
> in ordinea corecta, dar din punctul meu de vedere implementarea este
> gresita.
Ok, daca se face cu semafoare sincronizarea intalnesti problema expusa
de tine, atunci cum crezi ca ar trebuii sa se realizeze aceasta
sincronizare?
> _______________________________________________
> http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii
>
--
Bogdan.
More information about the so
mailing list