argra****@users*****
argra****@users*****
2012年 12月 17日 (月) 04:15:13 JST
Index: docs/modules/threads-1.67/threads.pod diff -u docs/modules/threads-1.67/threads.pod:1.4 docs/modules/threads-1.67/threads.pod:1.5 --- docs/modules/threads-1.67/threads.pod:1.4 Fri Sep 9 04:46:56 2011 +++ docs/modules/threads-1.67/threads.pod Mon Dec 17 04:15:13 2012 @@ -19,7 +19,7 @@ =end original -このドキュメントは threads バージョン 1.67 を記述しています。 +この文書は threads バージョン 1.67 を記述しています。 =head1 SYNOPSIS @@ -308,8 +308,8 @@ =end original -いずれかのスレッドが join か detach されずにプログラムが終了すると、警告が -出ます。 +全てのスレッドが join されるか detach される前にプログラムが終了した場合、 +警告が発生します。 =begin original @@ -1041,9 +1041,9 @@ =end original -Returns the stack size for a particular thread. A return value of zero -indicates the system default stack size was used for the thread. -(TBT) +特定のスレッドのスタックサイズを返します。 +返り値 0 は、そのスレッドでシステムデフォルトのスタックサイズが +使われていることを示します。 =item $old_size = threads->set_stack_size($new_size); @@ -1064,10 +1064,9 @@ =end original -Some platforms have a minimum thread stack size. Trying to set the stack size -below this value will result in a warning, and the minimum stack size will be -used. -(TBT) +最小スレッドスタックサイズがあるプラットフォームもあります。 +その値よりスタックサイズを小さくしようとすると警告が出て、最小 +スタックサイズが使われます。 =begin original @@ -1076,9 +1075,8 @@ =end original -Some Linux platforms have a maximum stack size. Setting too large of a stack -size will cause thread creation to fail. -(TBT) +最大スタックサイズのある Linux プラットフォームもあります。 +大きすぎるスタックサイズを設定するとスレッド作成に失敗します。 =begin original @@ -1087,9 +1085,8 @@ =end original -If needed, C<$new_size> will be rounded up to the next multiple of the memory -page size (usually 4096 or 8192). -(TBT) +必要なら、C<$new_size> は次のメモリページサイズ(普通は4096 か 8192)倍数に +切り上げられます。 =begin original @@ -1099,10 +1096,10 @@ =end original -Threads created after the stack size is set will then either call -C<pthread_attr_setstacksize()> I<(for pthreads platforms)>, or supply the -stack size to C<CreateThread()> I<(for Win32 Perl)>. -(TBT) +スタックサイズが設定された後に作られたスレッドは +C<pthread_attr_setstacksize()> を呼び出す I<(pthreads プラットフォームの +場合)> か C<CreateThread()> にスタックサイズを渡します +I<(Win32 Perl の場合)>。 =begin original @@ -1132,9 +1129,8 @@ =end original -The default per-thread stack size may be set at the start of the application -through the use of the environment variable C<PERL5_ITHREADS_STACK_SIZE>: -(TBT) +デフォルトのスレッド毎のスタックサイズは環境変数 +C<PERL5_ITHREADS_STACK_SIZE> を使ってアプリケーションの開始時に設定できます: PERL5_ITHREADS_STACK_SIZE=1048576 export PERL5_ITHREADS_STACK_SIZE @@ -1148,10 +1144,9 @@ =end original -This value overrides any C<stack_size> parameter given to C<use threads>. Its -primary purpose is to permit setting the per-thread stack size for legacy -threaded applications. -(TBT) +この値は C<use threads> に与えられる C<stack_size> 引数で上書きできます。 +主な目的はレガシーなスレッドアプリケーションでスレッド毎のスタックサイズを +設定できるようにすることです。 =item threads->create({'stack_size' => VALUE}, FUNCTION, ARGS) @@ -1162,9 +1157,8 @@ =end original -To specify a particular stack size for any individual thread, call -C<-E<gt>create()> with a hash reference as the first argument: -(TBT) +個々のスレッドの個別のスタックサイズを指定するには、最初の引数として +ハッシュリファレンスを指定して C<-E<gt>create()> を呼び出します: my $thr = threads->create({'stack_size' => 32*4096}, \&foo, @args); @@ -1177,9 +1171,9 @@ =end original -This creates a new thread (C<$thr2>) that inherits the stack size from an -existing thread (C<$thr1>). This is shorthand for the following: -(TBT) +これは既に存在するスレッド (C<$thr1>) からスタックサイズを継承して新しい +スレッド (C<$thr2>) を作成します。 +これは以下のものの短縮形です: my $stack_size = $thr1->get_stack_size(); my $thr2 = threads->create({'stack_size' => $stack_size}, FUNCTION, ARGS); @@ -1198,10 +1192,9 @@ =end original -When safe signals is in effect (the default behavior - see L</"Unsafe signals"> -for more details), then signals may be sent and acted upon by individual -threads. -(TBT) +安全なシグナルが有効なとき (デフォルトの振る舞いです - さらなる +詳細については L</"Unsafe signals"> を参照してください)、シグナルは +それぞれのスレッドに対して送られて動作します。 =over 4 @@ -1216,11 +1209,11 @@ =end original -Sends the specified signal to the thread. Signal names and (positive) signal -numbers are the same as those supported by -L<kill()|perlfunc/"kill SIGNAL, LIST">. For example, 'SIGTERM', 'TERM' and -(depending on the OS) 15 are all valid arguments to C<-E<gt>kill()>. -(TBT) +指定されたシグナルをスレッドに送ります。 +シグナル名と(正の)シグナル番号は L<kill()|perlfunc/"kill SIGNAL, LIST"> で +対応しているものと同じです。 +例えば、'SIGTERM', 'TERM' と (OS に依存しますが) 15 は全て +C<-E<gt>kill()> への妥当な引数です。 =begin original @@ -1241,9 +1234,9 @@ =end original -Signal handlers need to be set up in the threads for the signals they are -expected to act upon. Here's an example for I<cancelling> a thread: -(TBT) +シグナルハンドラは対応することを想定しているシグナルに対してスレッドで +設定される必要があります。 +以下はスレッドを I<キャンセルする> 例です: use threads; @@ -1272,10 +1265,9 @@ =end original -Here's another simplistic example that illustrates the use of thread -signalling in conjunction with a semaphore to provide rudimentary I<suspend> -and I<resume> capabilities: -(TBT) +以下は基本的な I<中断> と I<再開> の機能を提供するためにスレッドの +シグナルをセマフォと組み合わせた使い方を示すための単純化されたもう一つの +例です: use threads; use Thread::Semaphore; @@ -1317,13 +1309,13 @@ =end original -CAVEAT: The thread signalling capability provided by this module does not -actually send signals via the OS. It I<emulates> signals at the Perl-level -such that signal handlers are called in the appropriate thread. For example, -sending C<$thr-E<gt>kill('STOP')> does not actually suspend a thread (or the -whole process), but does cause a C<$SIG{'STOP'}> handler to be called in that -thread (as illustrated above). -(TBT) +警告: このモジュールによって提供されているスレッドへのシグナル機能は +実際には OS 経由でシグナルを送っていません。 +シグナルハンドラが適切なスレッドで呼び出されるように Perl レベルでシグナルを +I<エミュレート> しています。 +例えば、C<$thr-E<gt>kill('STOP')> は実際にはスレッド(またはプロセス全体)を +停止させませんが、(上述したように) 対象のスレッドの C<$SIG{'STOP'}> +ハンドラが呼び出されます。 =begin original @@ -1333,10 +1325,9 @@ =end original -As such, signals that would normally not be appropriate to use in the -C<kill()> command (e.g., C<kill('KILL', $$)>) are okay to use with the -C<-E<gt>kill()> method (again, as illustrated above). -(TBT) +そのため、普通は C<kill()> コマンドでの使用が適切ではないようなシグナル +(例えば C<kill('KILL', $$)>)) は C<-E<gt>kill()> メソッドで使っても +(再び上述したように)問題ありません。 =begin original @@ -1348,12 +1339,10 @@ =end original -Correspondingly, sending a signal to a thread does not disrupt the operation -the thread is currently working on: The signal will be acted upon after the -current operation has completed. For instance, if the thread is I<stuck> on -an I/O call, sending it a signal will not cause the I/O call to be interrupted -such that the signal is acted up immediately. -(TBT) +同様に、スレッドにシグナルを送ってもスレッドが今処理している操作を +妨害しません: シグナルは現在の処理が終了した後に処理されます。 +例えば、スレッドが I/O 呼び出して I<固まっている> なら、シグナルが直ちに +処理されるように I/O 呼び出しを中断はしません。 =begin original @@ -1378,9 +1367,8 @@ =end original -If the program exits without all threads having either been joined or -detached, then this warning will be issued. -(TBT) +全てのスレッドが join されるか detach される前にプログラムが終了した場合、 +この警告が発生します。 =begin original @@ -1389,9 +1377,8 @@ =end original -NOTE: If the I<main> thread exits, then this warning cannot be suppressed -using C<no warnings 'threads';> as suggested below. -(TBT) +注意: I<main> スレッドが存在しているなら、後に示唆しているようにこの警告は +C<no warnings 'threads';> を使って抑制できません。 =item Thread creation failed: pthread_create returned # @@ -1402,9 +1389,8 @@ =end original -See the appropriate I<man> page for C<pthread_create> to determine the actual -cause for the failure. -(TBT) +失敗の実際の原因を決定するには C<pthread_create> の適切な I<man> ページを +参照してください。 =item Thread # terminated abnormally: ... @@ -1416,10 +1402,9 @@ =end original -A thread terminated in some manner other than just returning from its entry -point function, or by using C<threads-E<gt>exit()>. For example, the thread -may have terminated because of an error, or by using C<die>. -(TBT) +スレッドが単にエントリポイント関数から返ったか C<threads-E<gt>exit()> を +使った以外の何らかの方法で終了しました。 +例えば、エラーや C<die> の使用によってスレッドが終了しました。 =item Using minimum thread stack size of # @@ -1431,10 +1416,9 @@ =end original -Some platforms have a minimum thread stack size. Trying to set the stack size -below this value will result in the above warning, and the stack size will be -set to the minimum. -(TBT) +最低スレッドスタックサイズがあるプラットフォームもあります。 +スタックサイズをその値以下に設定しようとするとこの警告が出て、 +スタックサイズは最小値に設定されます。 =item Thread creation failed: pthread_attr_setstacksize(I<SIZE>) returned 22 @@ -1445,9 +1429,8 @@ =end original -The specified I<SIZE> exceeds the system's maximum stack size. Use a smaller -value for the stack size. -(TBT) +指定された I<SIZE> がシステムの最大スタックサイズを超えています。 +スタックサイズとしてより小さい値を使ってください。 =back @@ -1484,9 +1467,8 @@ =end original -The particular copy of Perl that you're trying to use was not built using the -C<useithreads> configuration option. -(TBT) +使おうとしている Perl が C<useithreads> 設定オプションを使って +ビルドされていません。 =begin original @@ -1497,11 +1479,10 @@ =end original -Having threads support requires all of Perl and all of the XS modules in the -Perl installation to be rebuilt; it is not just a question of adding the -L<threads> module (i.e., threaded and non-threaded Perls are binary -incompatible.) -(TBT) +スレッド対応にするためには Perl の全てと Perl インストールの全ての XS +モジュールを再ビルドする必要があります; これは L<threads> モジュールを +追加するためだけではありません (つまり、スレッド対応 Perl と非対応 Perl は +バイナリ互換性がありません。) =item Cannot change stack size of an existing thread @@ -1512,9 +1493,8 @@ =end original -The stack size of currently extant threads cannot be changed, therefore, the -following results in the above error: -(TBT) +現在既にあるスレッドのスタックサイズは変更できないので、以下のようなものは +上述のエラーになります: $thr->set_stack_size($size); @@ -1527,9 +1507,9 @@ =end original -Safe signals must be in effect to use the C<-E<gt>kill()> signalling method. -See L</"Unsafe signals"> for more details. -(TBT) +C<-E<gt>kill()> シグナルメソッドを使うには安全なシグナルが +有効でなければなりません。 +さらなる詳細については L</"Unsafe signals"> を参照してください。 =item Unrecognized signal name: ... @@ -1540,9 +1520,8 @@ =end original -The particular copy of Perl that you're trying to use does not support the -specified signal being used in a C<-E<gt>kill()> call. -(TBT) +使おうとしている Perl が C<-E<gt>kill()> 呼び出しで使おうとしているシグナルに +対応していません。 =back @@ -1558,10 +1537,9 @@ =end original -Before you consider posting a bug report, please consult, and possibly post a -message to the discussion forum to see if what you've encountered is a known -problem. -(TBT) +バグ報告を投稿することを考える前に、まず相談してください; そしてできれば +遭遇したものが既知の問題かどうかを見るために議論フォーラムにメッセージを +投稿してください。 =over @@ -1577,10 +1555,9 @@ =end original -See L<perlmod/"Making your module threadsafe"> when creating modules that may -be used in threaded applications, especially if those modules use non-Perl -data, or XS code. -(TBT) +スレッド対応アプリケーションで使われるかもしれないモジュールを作るとき、 +とくにモジュールが非 Perl データや XS コードを使っているときは、 +L<perlmod/"Making your module threadsafe"> を参照してください。 =item Using non-thread-safe modules @@ -1595,11 +1572,12 @@ =end original -Unfortunately, you may encounter Perl modules that are not I<thread-safe>. -For example, they may crash the Perl interpreter during execution, or may dump -core on termination. Depending on the module and the requirements of your -application, it may be possible to work around such difficulties. -(TBT) +残念ながら、I<スレッドセーフ> ではない Perl モジュールに +遭遇するかもしれません。 +例えば、実行中に Perl インタプリタがクラッシュしたり、コアダンプして +終了したりするかもしれません。 +モジュールとアプリケーションの必要事項に依存して、このような問題を +回避できることがあります。 =begin original @@ -1609,10 +1587,9 @@ =end original -If the module will only be used inside a thread, you can try loading the -module from inside the thread entry point function using C<require> (and -C<import> if needed): -(TBT) +モジュールがスレッドの中でだけ使われているなら、スレッドエントリ関数の +内側から C<require> (および必要なら C<import>) を使ってモジュールを +読み込んでみてください: sub thr_func { @@ -1631,11 +1608,10 @@ =end original -If the module is needed inside the I<main> thread, try modifying your -application so that the module is loaded (again using C<require> and -C<-E<gt>import()>) after any threads are started, and in such a way that no -other threads are started afterwards. -(TBT) +モジュールが I<main> スレッドの内側で必要なら、スレッドを開始してから +(再び C<require> と C<-E<gt>import()> を使って) モジュールが +読み込まれるように、そしてその後他のスレッドが開始しないように +アプリケーションを修正してみてください。 =begin original @@ -1644,12 +1620,14 @@ =end original -If the above does not work, or is not adequate for your application, then file -a bug report on L<http://rt.cpan.org/Public/> against the problematic module. -(TBT) +上述のものが動作しないか、アプリケーションに適切でないなら、問題のある +モジュールに対して L<http://rt.cpan.org/Public/> にバグ報告を +登録してください。 =item Current working directory +(カレントワーキングディレクトリ) + =begin original On all platforms except MSWin32, the setting for the current working directory @@ -1658,10 +1636,10 @@ =end original -On all platforms except MSWin32, the setting for the current working directory -is shared among all threads such that changing it in one thread (e.g., using -C<chdir()>) will affect all the threads in the application. -(TBT) +MSWin32 以外の全てのプラットフォームでは、カレントワーキングディレクトリの +設定は全てのスレッドで共有されるので、あるスレッドでこれを変更する +(つまり C<chdir()> を使う) とアプリケーションの全てのスレッドに +影響します。 =begin original @@ -1670,9 +1648,8 @@ =end original -On MSWin32, each thread maintains its own the current working directory -setting. -(TBT) +MSWin32 では、それぞれのカレントワーキングディレクトリ設定を独自に +管理しています。 =item Environment variables @@ -1741,11 +1718,11 @@ =end original -Creating threads inside C<BEGIN>, C<CHECK> or C<INIT> blocks should not be -relied upon. Depending on the Perl version and the application code, results -may range from success, to (apparently harmless) warnings of leaked scalar, or -all the way up to crashing of the Perl interpreter. -(TBT) +C<BEGIN>, C<CHECK>, C<INIT> ブロックの内側でスレッドを作成することを +信頼するべきではありません。 +Perl バージョンとアプリケーションコードに依存して、成功から(おそらくは +無害な)リークしたスカラの警告、Perl インタプリタのクラッシュまでさまざまな +結果となります。 =item Unsafe signals @@ -1760,11 +1737,10 @@ =end original -Since Perl 5.8.0, signals have been made safer in Perl by postponing their -handling until the interpreter is in a I<safe> state. See -L<perl58delta/"Safe Signals"> and L<perlipc/"Deferred Signals (Safe Signals)"> -for more details. -(TBT) +Perl 5.8.0 から、インタプリタが I<安全な> 状態になるまでシグナル操作を +延期することでシグナルはより安全になりました。 +さらなる詳細については L<perl58delta/"Safe Signals"> と +L<perlipc/"Deferred Signals (Safe Signals)"> を参照してください。 =begin original @@ -1773,18 +1749,23 @@ =end original -Safe signals is the default behavior, and the old, immediate, unsafe -signalling behavior is only in effect in the following situations: -(TBT) +安全なシグナルはデフォルトの振る舞いで、古い、即時で、安全でないシグナルの +振る舞いは以下の状況でのみ有効です。 =over 4 =item * Perl has been built with C<PERL_OLD_SIGNALS> (see C<perl -V>). +(Perl が C<PERL_OLD_SIGNALS> でビルドされている(C<perl -V> 参照)。) + =item * The environment variable C<PERL_SIGNALS> is set to C<unsafe> (see L<perlrun/"PERL_SIGNALS">). +(環境変数 C<PERL_SIGNALS> が C<unsafe> に設定されている (L<perlrun/"PERL_SIGNALS"> 参照)。) + =item * The module L<Perl::Unsafe::Signals> is used. +(L<Perl::Unsafe::Signals> モジュールが使われている。) + =back =begin original @@ -1794,9 +1775,8 @@ =end original -If unsafe signals is in effect, then signal handling is not thread-safe, and -the C<-E<gt>kill()> signalling method cannot be used. -(TBT) +安全でないシグナルが有効の場合、シグナルの扱いはスレッドセーフではなく、 +C<-E<gt>kill()> シグナルメソッドは使えません。 =item Returning closures from threads @@ -1811,11 +1791,10 @@ =end original -Returning closures from threads should not be relied upon. Depending of the -Perl version and the application code, results may range from success, to -(apparently harmless) warnings of leaked scalar, or all the way up to crashing -of the Perl interpreter. -(TBT) +スレッドからクロージャを返すことを信頼するべきではありmせん。 +Perl バージョンとアプリケーションコードに依存して、成功から(おそらくは +無害な)リークしたスカラの警告、Perl インタプリタのクラッシュまでさまざまな +結果となります。 =item Returning objects from threads @@ -1830,11 +1809,10 @@ =end original -Returning objects from threads does not work. Depending on the classes -involved, you may be able to work around this by returning a serialized -version of the object (e.g., using L<Data::Dumper> or L<Storable>), and then -reconstituting it in the joining thread. -(TBT) +スレッドからオブジェクトを返すのは動作しません。 +使うクラスに依存して、(例えば L<Data::Dumper> や L<Storable> を使って) +直列化されたオブジェクトを返して、join したスレッドでこれを再構成することで +これを回避できることがあります。 =item Perl Bugs and the CPAN Version of L<threads> @@ -1850,12 +1828,12 @@ =end original -Support for threads extends beyond the code in this module (i.e., -F<threads.pm> and F<threads.xs>), and into the Perl interpreter itself. Older -versions of Perl contain bugs that may manifest themselves despite using the -latest version of L<threads> from CPAN. There is no workaround for this other -than upgrading to the latest version of Perl. -(TBT) +スレッドの対応は +このモジュール (つまり F<threads.pm> と F<threads.xs>) のコードを超えて +Perl インタプリタ自身に拡張されます。 +より古いバージョンの Perl には CPAN から最新版の L<threads> を使っているにも +関わらず自分自身を示すというバグがあります。 +Perl を最新版にアップグレードする以外に回避方法はありません。 =begin original @@ -1866,11 +1844,9 @@ =end original -Even with the latest version of Perl, it is known that certain constructs -with threads may result in warning messages concerning leaked scalars or -unreferenced scalars. However, such warnings are harmless, and may safely be -ignored. -(TBT) +最新版の Perl でも、スレッドとある種の構造はリークしたスカラや +参照されていないスカラ内観する警告メッセージが出ることがあります。 +しかし、このような警告は無害で、安全に無視できます。 =back @@ -1978,6 +1954,7 @@ Translate: まかまか <makam****@donzo*****> Update: Kentaro Shirakata <argra****@ub32*****> (5.8.4, 1.67-) +Status: completed =end meta