Perlでマルチスレッド

こちらで何度も書いてることですが、
最近新調したPCはマルチコアなPCばかり。
シングルCPUだった、AcerPower1000やgatewayのノートPCも
無理矢理CPUを換装してDual化している。
そんなわけでチカラワザのうちのシステムを効率的に動かすには、
マルチスレッドで並列処理をさせてやる必要がある。
今まではマシンの性能やネットワークの種類(有線or無線)などで、
実行するプログラム数を変えていた。
最初に稼働させてしまうだけであれば、良いがシミュレーション等の
最後の方の処理がある場合には、手作業で作業を分担するのは面倒である。
先週のシミュレーションが時間のかかったのは、この辺の事情がある。
そんな訳で処理の一部をマルチスレッド化することにした。
Perlでのマルチスレッドはいくつかの方法があるが、
今回は以下のモジュールを使用して、マルチスレッドにした。
自分的には今の環境には一番良いモジュールを選択したと思っている。
各モジュールの使い方などは、他にいろいろとページもあるので、
そちらに譲ることとする。
(自分の手書きメモには書いたけど、おこす時間がないです(;;))
使ったモジュールは、
threads
Thread::Queue::Any
を使った。
threadsは定番。Anyは最初に処理したい内容を配列に格納して、
各スレッドがdequeueで取り出しながら処理することにした。
終了の判定がうまく動かないけど、処理自体はかなりきれいに処理をしてくれた。
これからは、どんなパソコンもマルチコア化していくだろうし、
これからのプログラムは積極的にマルチスレッドを使ったものを作りたい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です