Thread speicher freigeben (31 answers)
Opened by esskar at 2004-07-01 15:11

Crian
 2004-07-05 15:10
#83828 #83828
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
So etwas in der Art meinte ich bei meinem "zu welchem Preis".
Oder die Kosten, all diese Links auf undef zu setzten beim Wegwerfen.

Wie würde man denn bei dem Modul Scalar::Util::weaken vorgehen? Bedeutet das Schwächen, dass diese Referenzen für die Referenzzählung nicht gezählt werden? Würde man dann die eine Richtung in obigem Kreis komplett schwächen, sowie eine Referenz der anderen Richtung?

Ziel muss ja sein, dass die Datenstruktur komplett abgeräumt werden kann, wenn sie aus dem Scope geht.

Das sind jetzt aber alles nur vage theoretische Überlegungen, ich habe mit dem Modul bisher noch nicht gearbeitet.

Quote
   weaken REF
       REF will be turned into a weak reference. This means that it will
       not hold a reference count on the object it references.
Also when
       the reference count on that object reaches zero, REF will be set to
       undef.

       This is useful for keeping copies of references , but you don't want
       to prevent the object being DESTROY-ed at its usual time.

           {
             my $var;
             $ref = \$var;
             weaken($ref);                     # Make $ref a weak reference
           }
           # $ref is now undef


Aha :-)

Interessant ist dann sicherlich auch Scalar::Util::isweak

Quote
   isweak EXPR
       If EXPR is a scalar which is a weak reference the result is true.

           $ref  = \$foo;
           $weak = isweak($ref);               # false
           weaken($ref);
           $weak = isweak($ref);               # true
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread speicher freigeben