=encoding euc-jp =head1 名前 Thread::Detach - Windows上での壊れたthreads->detachの修正 =head1 概要 use Thread::Detach (); # 修正の適用 =head1 解説 *** A note of CAUTION *** This module only functions on Perl versions 5.8.0 and later. And then only when threads are enabled with -Dusethreads. It is of no use with any version of Perl before 5.8.0 or without threads enabled. ************************* *** 注 意 書 き *** このモジュールは、Perlのバージョン5.8.0以降で、かつ、-Dusethreads オプションでスレッドが有効になっている場合にのみ機能する。5.8.0以前、 あるいはスレッドが有効になっていない場合は、使うことができない。 ************************* Perl versions before 5.8.4 don't support the "detach" method of the L module B!. This module provides a temporary fix for this problem if it is running under Windows and with a version of Perl that has the problem. In any other situation, this module does B. Perlのバージョン5.8.4より前では、BLモジュールの"detach" メソッドがサポートされていない! このモジュールは、Windows上で実行されて、 かつ、その問題を抱えたPerlのバージョンである場合に、暫定的な修正を提供する。 それ以外の状況では、このモジュールはB<何もしない>。 =head1 操作の理論 All of this happens on Windows B and if the version of the Perl executor is known to have the problem. これは全てWindows上でB<のみ>発生し、かつ、Perl実行ファイルのバージョンが その問題を抱えているものと知られている場合である。 This module replaces the standard Cdetach> method with another subroutine that just sets an internal flag to mark the thread as "detached". このモジュールは標準的なCdetach>メソッドを別のサブルーチンで 置き換える。このルーチンは単に内部フラグをセットして、そのスレッドを "detached"として印付ける。 Futhermore it uses L to register a subroutine that is executed after each thread is finished executing: this subroutine marks the thread as "done" if the thread was marked as "detached" earlier. さらに加えて、Lを使って、各スレッドが実行処理を終了した後に 実行されるサブルーチンを登録する:このサブルーチンは、もしそのスレッドが 既に"detached"の印がつけられている場合に、"done"として印付ける。 Lastly, it uses L 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. 最後に、Lを使って各スレッドが始まるときに実行される サブルーチンを登録する:このサブルーチンは"done"の印がつけられたスレッドを 全て刈り取る。これにより必要なクリーンアップが提供される。 =head1 必要なモジュール Thread::Exit (0.08) =head1 TODO Maybe the reliance on Thread::Exit should be replaced by some more direct magic. Using Thread::Exit made this module all the more simple, though. Thread::Exitの信頼性は、より直接的な方法によって置き換えられるべきであろう。 しかし、Thread::Exitの使用により、このモジュールはよりシンプルになった。 Examples should be added. 例の追加。 =head1 作者 Elizabeth Mattijsen, . Please report bugs to . =head1 著作権 Copyright (c) 2004 Elizabeth Mattijsen . All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 参照 L, L.