|
|
| Do you know where your variables are? | |
| PerlMonks |
Re^7: Hanging Threadsby BrowserUk (Patriarch) |
| on Aug 18, 2007 at 22:30 UTC ( [id://633535]=note: print w/replies, xml ) | Need Help?? |
|
If you have the interest in discovering more, given that you already have a solution, then you could try installing the latest CPAN version (1.63) and see if that also cures the problem with using threads->self(). I have 1.63 installed and it's not an easy task to back that out, but if that cures the problem for you it's probably safe to conclude it is a old problem that has already been fixed. Strange that I never encountered it in the couple of years that I've been using 5.8.6/5.8.8, but then I always use threads->self->tid for identification purposes and have never had reason to obtain or reference a thread handle from within it's own thread procedure. As I mentioned, there is a certain logic to it. If the thread procedure contains a reference to itself, then you have a circular reference, and that is a well-known problem that prevents destructors being called. I wonder how they cured it? The usual method is to weaken the reference (artificially drop the reference count), but looking inside 1.63 they appear to mortalise before returning it--which I thought meant that the ref count was increased? But then, there is a bunch of the internal shenanigans that is tantamount to black magic as far as my understanding goes. Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
In Section
Seekers of Perl Wisdom
|
|
||||||||||||||||||||||||||||||