Salut,

Într-adevăr, așa este. Sincronizarea aia prin sleep mai poate da
rateuri în cazul în care 2 secunde nu sunt suficiente pentru ca
procesul copil să scrie tot în pipe.

Așa că o să scot din testul respectiv verificarea numărului de apeluri
ReadFile, ca să fie mai ușor.

On Mon, 1 Apr 2019 at 19:36, Gabriel Boroghina via so
<so@cursuri.cs.pub.ro> wrote:
>
> Salut,
>
> Am si eu problema asta. Din ce am observat, e o problema de
> sincronizare intre procesul parinte
> (care citeste din pipe) si procesul copil (care scrie in pipe).
>
> Ideea e ca pipe-ul creat cu CreatePipe are un buffer asociat de
> dimensiune egala cu valoarea
> data ca ultim parametru (nSize); si daca bufferul asta nu e suficient
> de mare, procesul copil nu
> o sa reuseasca sa scrie suficient (4096 bytes in principiu, incat sa
> poti sa iti umpli tu bufferul din
> SO_FILE cand citesti) pana incepe procesul parinte sa citeasca.
>
> O varianta simpla de rezolvare ar fi sa ii dai o dimensiune mare
> buffer-ului pipe-ului; in felul asta,
> in cele 2 secunde de Sleep din tester (linia 82, unde e si comentariul
> // make sure the child process wrote
> all the data) child-ul va apuca sa scrie tot in buffer, iar parent-ul
> va citi cat de mult posibil (4096 la primele
> 3 citiri, restul la a 4-a si va primi EOF la a 5-a).
>
> Dar as vrea si eu sa stiu daca varianta asta e acceptabila (ca
> presupune sa setam nSize ala
> cu un "magic constant" oarecum).
> Btw, daca ii dai o dimensiune mica lui nSize (de ex. 300), o sa iti
> pice si pe local (sau daca ii dai 2-3
> core-uri VM-ului :)) ). Daca dai nSize = 0, din ce am citit, se
> foloseste o dimensiune standard (care nu e
> prestabilita, depinde de RAM-ul disponibil, etc).
>
> Gabriel Boroghina
>
> On Sun, 31 Mar 2019 at 20:44, George Diaconu via so
> <so@cursuri.cs.pub.ro> wrote:
> >
> > Salut,
> >
> > Vin cu o problema veche de cand lumea, local trec toate testele fara
> > probleme, pe vmchecker, testul popen read da fail cu mesajul
> > "src/test_popen_read.c:96: Incorrect number of reads: got 220,
> > expected 5".
> > O singura data a trecut testul acesta pe vmchecker, si atunci nu am
> > modificat nimic intre upload-uri. Acum am mai facut cateva modificari,
> > local merge, dar pe vmchecker nu vrea...
> > Nici nu stiu cum sa fac debugging in clipa asta...
> > _______________________________________________
> > http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
_______________________________________________
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Raspunde prin e-mail lui