{{category Perl}} *fork()による疑似マルチスレッド Perlでマルチスレッドプログラムを作成するには、ithreadsを使う方法もあるが、スレッド間通信の必要が無い場合にはより多くの環境で利用可能なfork()を用いて疑似マルチスレッド(マルチプロセス)プログラムを作成することも可能である。スレッド(プロセス)間での通信を要する場合には通常のithreadsを使うか、fork()でthreadをエミュレートする[forks|http://search.cpan.org/dist/forks/lib/forks.pm]を用いるとよいでしょう。 *コード例 use strict; $| = 1; my $numthreads = 2; { my $child = 0; $? = 0; for (my $i = 0; $i < 100; $i ++) { if (my $pid = fork()) { $child ++; if ($child == $numthreads) { if (wait == -1) { $child = 0; } else { $child --; } } if ($?) { &errorMessage(__LINE__); } next; } else { print($i + 1 . "\n"); exit(0); } } } # join while (wait != -1) { if ($?) { &errorMessage(__LINE__); } }