[so] vesti bune

Andrei Hagiescu so@atlantis.cs.pub.ro
Tue, 25 Nov 2003 21:19:26 +0200


Ai garantia ca la alocarea indexului in TLS valoarea
lui e NULL in toate threadurile atat in Windows cat si
in Linux. Iti citez din documentatie

Sunt de acord cu aceasta afirmatie atata vreme cat am si garantia ca in
toate thread-urile care vor folosi monitorul nimeni nu se va fi folosit de
acel TLS inainte si nu-l va elibera _uitand_ sa-l curete


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


>
> Nu trebuie sa fii ingrijorat. Hai sa lamurim
> lucrurile:
> - aloci un index in TLS la monitor_create;
> - la monitor_enter daca valoarea lui e NULL, aloci o
> zona unde sa tii informatia, sau pur si simplu setezi
> pointerul la alta valoare diferita de NULL pt ca tot
> ce ai tu nevoie e o info booleana (NULL vs NOT NULL
> could do it).
> - daca la enter nu era NULL inseamna ca threadul era
> deja in monitor deci oops.
> - la leave setezi pointerul la NULL (si faci free in
> cazul in care ai alocat ceva acolo)
> - la signal, wait, broadcast testezi pointerul sa nu
> fie NULL.
> - la destroi eliberezi indexul.
>
> Ai garantia ca la alocarea indexului in TLS valoarea
> lui e NULL in toate threadurile atat in Windows cat si
> in Linux. Iti citez din documentatie:
>
> -Windows (PSDK): "If the function succeeds, the return
> value is a TLS index. The slots for the index are
> initialized to zero." e vb de TlsAlloc.
>
> -Linux (man pthread_key_create): "The value initially
> associated with the returned key is !NULL! in all
> currently executing threads."
>
> Cosmin
>
> --- Andrei Hagiescu <andrei.hagiescu@mymail.ro> wrote:
> > 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.
>
>
> __________________________________
> 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/
>
>
>