[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