Re: [RFC] Stringify a thread
[email protected] (Jim Bodwin) Thu, 05 Oct 2006 08:55:31 -0700
| Newsgroups | perl.perl5.porters,perl.ithreads |
|---|---|
| Message-ID | <[email protected]> |
The current behaviour (where stringifying a thread returns the class
name plus addrress) *IS* used by automatic dumpers. It is also a handy
feature in interactive debuggers since you can immediately tell what
kind of object a pointer is pointing too. If this change is made then
thread objects will be different from every other object class in the
world - and that is a bad thing. Automatic dumpers and tree walkers
will have to add special code for this.
So, yes, this will break some things and make life a bit harder for
debuggers.
Why is the current stringify behavior a problem? The current strings
are perfectly valid hash keys. The phrase "rational hash key" is an
oxymoron - the point of a hash is to randomize things so making the key
more "rational" doesn't do you any good at all.
To be concise, if a human is going to look at the string, then the
current stringification is better. If a machine (i.e., the hash
algorithm) is going to look at the string then it doesn't matter since
both are unique. If you really insist on using the TID for a hash key
then just use $thr->tid().
- Jim
Jerry Hedden wrote:
> I'm considering a one line addition to the threads module to overload
> the string value of a thread to return its ID:
>
> '""' => sub { shift->tid() }
>
> Since thread IDs are unique, thread objects could be used as hash keys
> in a more rational way:
>
> $timeouts{$thr} = $secs;
>
> Also, it would also simply such things as:
>
> print("Thread $thr running...\n");
>
> Comments?
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>