[so] Tema 3 TSD
adrian nistor
adriannistorrr at yahoo.com
Thu Nov 30 21:53:32 EET 2006
--- Catalin Iacob <iacobcatalin at gmail.com> wrote:
> In enunt se spune
>
> "Pentru a testa utilizarea corecta a monitorului
> mentineti un index in
> Thread Specific Data care indica pentru fiecare fir
> de executie daca se
> afla sau nu in interiorul monitorului.... Indexul
> TSD este initializat
> implicit la NULL deci va trebui sa folositi functia
> de intializare a
> bibliotecii pentru initializarea lui cu o valoare
> utila."
>
> Din ce inteleg eu, ideea e ca fiecare thread tine
> minte in acel void*
> din TSD daca e sau nu in monitor. Si cum NULL adica
> 0 nu-i bun trebuie
> sa punem de exemplu 1 si 2 pentru se afla / nu se
> afla in monitor.
> Intrebarea e cum accesam fiecare thread in functia
> de intializare a
> bibliotecii pentru a seta valoare initiala 2 in TSD?
> Eu am inteles ca
> functia de initializare a bibliotecii se cheama
> automat o singura data
> inainte de intrarea in main a threadului unic
> initial al procesului care
> se executa si foloseste biblioteca (deci cu mult
> inainte ca acest proces
> sa creeze alte threaduri care sa aiba TSD) ? Am si
> facut un mic program
> de test care imi confirma ca e asa.
Intr-adevar, nu cred ca se poate cum
scrie in enunt; pentru ca:
-la initializarea bibliotecii threadurile
nici nu sunt pornite
-chiar daca ai sti cate sunt si care sunt,
valoarea din TSD poate fi modificata
numai de threadul respectiv. Nu ai putea
sa o initializezi din alt thread.
>
> Oarecum paralel cu intrebarea dinainte de ce sa
> folosim acest mod de
> lucru pentru a sti cine e in monitor si cine nu? De
> exemplu de ce sa nu
> tina monitorul o lista cu toate threadurile care
> sunt in el?
Threadul care vrea sa intre ar trebui sa
parcurga aceasta lista ca sa vada daca e
in ea sau nu. Deci performanta.
De asemeni, ea ar trebui sa fie in afara
zonei protejate de monitor. Deci ar trebui
sincronizata. Daca ai 10 threaduri
asteptand la un mutex de exemplu ca al
11-lea sa termine de parcurs lista,
ai iar o problema de performanta.
Aceasta sincronizare iti introduce in plus
si o o relatie de ordine(de serializare)
intre threaduri. Tu vrei sa impui numai
politica de functionare a monitorului, nu
si relatii de ordine/serializare nenecesare.
>
> Mutumesc (scuze ca pun cam multe intrebari in
> ultimul timp dar la
> raspunsurile la cele dinainte chiar m-au ajutat si
> nu inteleg deloc ce
> se vrea cu acest mod de folosire al TSD)
>
>
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
Adrian Nistor
____________________________________________________________________________________
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail beta.
http://new.mail.yahoo.com
More information about the so
mailing list