[so] [Tema2] Detalii implementare

Valentin Stanciu valentin.stanciu at cti.pub.ro
Mon Apr 19 13:08:39 EEST 2010


Salut!

Am si eu niste neclaritati legate de tema2:

In enunt se spune ca nu avem voie sa folosim un singur semafor pentru
toata tabela hash. Daca toti clientii trimit comenzi la server si
serverul este cel care manipuleaza tabela mai avem nevoie de semafor?
Sau serverul trebuie sa faca fork() si sa trateze fiecare client in
paralel? In acest caz fiind cate un "server" pentru fiecare client si
partajand o tabela hash, sincronizati prin semafoare. Daca asta se
doreste, totusi, "Operațiile pe care le face serverul trebuie să
respecte ordinea temporală dată de primirea mesajelor de la clienți".
Ce se intampla cand 2 clienti adauga elemente in acelasi bucket in
acelasi timp?

In alta ordine de idei, se precizeaza ca pentru afisarea tabelei hash
se va folosi memorie partajata. In acest caz nu trebuie sa folosim un
semafor pe toata tabela cat timp clientul citeste? Daca nu, ce se
intampla daca un client citeste ceva din tabela si alt client adauga
ceva in tabela? Chiar si in cazul in care avem semafoare doar pe
buckets, de la momentul in care clientul1 incepe afisarea tabelei,
alti clienti pot adauga elemente in ultimele buckets (cand inca nu a
ajuns cu citirea clientul1) si astfel o sa avem un comportament
diferit fata de situatia in care aveam un semafor pe toata tabela. Si
din nou, "Operațiile pe care le face serverul trebuie să respecte
ordinea temporală dată de primirea mesajelor de la clienți".

Aceste intrebari desi sunt "detalii de implementare", datorita modului
de testare pot cauza diferente cu rezultatul oficial. Imi cer scuze
daca aceste intrebari erau explicate sau reieseau din enuntul temei,
dar eu nu am gasit.

Valentin


More information about the so mailing list