[so] vesti bune

Andrei Hagiescu so@atlantis.cs.pub.ro
Tue, 25 Nov 2003 18:37:16 +0200


Nu pare bine nici asa. Daca un thread este deschis inainte de crearea
TLS-ului (deci de pornirea acelui monitor) nu are cine sa initializeze acel
spatiu de stocare decat daca monitorul ar sti ce thread-uri sunt in proces.
Presupunand ca avem incredere ca Windows initializeaza acel spatiu cu NULL
(ceea ce nu stiu daca e valabil si in Linux) ar mai fi o problema daca acel
TLS a fost folosit in prealabil in thread-ul nostru de catre altcineva
(totusi monitorul va putea fi folosit in orice aplicatie) care nu l-a lasat
cu NULL cand l-a eliberat.

----- Original Message -----
From: "Cosmin Arad" <cosminarad@yahoo.com>
To: <so@atlantis.cs.pub.ro>
Sent: Monday, 24 November, 2003 2:20 AM
Subject: Re: [so] vesti bune


>
> --- Andrei Hagiescu <andrei.hagiescu@mymail.ro> wrote:
> > Datorita posibilitatii folosirii mai multor
> > monitoare un thread poate fi la
> > un moment dat intr-unul dintre ele si in afara
> > altuia....sau de ce nu in mai
> > multe monitoare? Daca da, atunci informatia stocata
> > in TLS (cu privire la
> > starea unui thread inauntrul sau in afara unui
> > monitor) trebuie sa nu mai
> > fie o simpla informatie booleana ci o lista de
> > monitoare in care thread-ul
> > este intrat, nu? Nu devine o solutie mai greu de
> > implementat decat o lista
> > de thread-uri intrate pentru fiecare monitor?
>
> Oops. You've got that right.
> Solutia ramane totusi simpla. In loc sa faceti
> TlsAlloc respectiv pthread_key_create in entry-pointul
> librariei (DllMain respectiv constructorul librariei
> pe Linux) veti face in functia create.
> Astfel fiecare monitor contine un index distinct in
> TLS
> iar verificarile de utilizare corecta care se fac in
> operatii se vor face folosind indexul respectiv.
> Asadar informatia ramane booleana :) si implementarea
> nu presupune overhead.
>
> Limitele sunt rezonabile: 1088 de indexuri in Windows
> 2000 si 1024 in Linux, deci un proces poate sa
> construiasca cam 1000 de monitoare.
>
> Cosmin
>
>
> __________________________________
> Do you Yahoo!?
> Protect your identity with Yahoo! Mail AddressGuard
> http://antispam.yahoo.com/whatsnewfree
> _______________________________________________
> so mailing list
> so@atlantis.cs.pub.ro
> http://atlantis.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
>
> ---------------------------------------------------------------
> Acasa.ro vine cu albumele, tu vino doar cu pozele ;)
> http://poze.acasa.ro/
>
>
>