Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Can't detach threads on Windows: Thread::Detach 0.01

by liz (Monsignor)
on Jan 01, 2004 at 18:40 UTC ( #318147=perlnews: print w/ replies, xml ) Need Help??

As pg found out in the threads Perl 5.8.2 thread is much worse and Perl 5.8.2 thread is worse - more findings from today, it is now confirmed that indeed you can not reliably detach threads on Win32 systems.

Since the root cause is now known, a workaround of the problem is now also easy to do. Which I've done in the form of a new module: Thread::Detach (also available from http://www.liz.nl/CPAN if it hasn't arrived on a CPAN mirror near you yet).

From the pod:

THEORY OF OPERATION
All of this happens on Windows only and if the version of the Perl executor is known to have the problem.

This module replaces the standard threads->detach method with another subroutine that just sets an internal flag to mark the thread as "detached".

Futhermore it uses Thread::Exit to register a subroutine that is executed after each thread is finished executing: this subroutine marks the thread as "done".

Lastly, it uses Thread::Exit to register a subroutine that is executed at the beginning of each thread: this subroutine reaps all the threads that were marked "done", hence providing the necessary cleanup.

Unfortunately, I have not been able to really test the module, as I don't do Windows myself. So I appreciate any bug reports, should there be any (which will undoubtedly be the case).

This module should allow you to run all your threaded applications that used threads->detach unchanged by adding -MThread::Detach to the command line, or by setting the PERL5OPT environment variable.

Liz

Comment on Can't detach threads on Windows: Thread::Detach 0.01
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlnews [id://318147]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (12)
As of 2015-07-02 11:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (34 votes), past polls