コマンドの並列実行

10月 18 2008 Tags: , , No Commented

 「Perlのsystem関数」にて、system関数を並べて実行すると、1つ目のsystem関数が実行した直後に2つ目のsystem関数が実行される。つまり、1つ目のsystem関数で指定したコマンドと2つ目のsystem関数で指定したコマンドが並列に実行されると書いたのだが、どうも勘違いだったようだ。
 研究室の人たちにそんな筈はないと指摘され、

system("sleep 5");
system("sleep 5");
を実行して確認したところ、10秒かかった。つまり、1つ目のsystem関数が処理し終わった後に、2つ目のsystem関数が実行されたわけだ。よって、system関数を並べると、並列処理ではなく直列処理ということになる。書き換えれば、
system("sleep 5 ; sleep 5");
を実行しているのと同義。

 さて、となると問題なのが、並列処理するにはどうすればよいか。色々試してみたところ、
system("sleep 5 & sleep 5");
で試したら、5秒だった。

 とはいえ、コンピュータが処理を行う都合上、1つ目のコマンドを実行し始めた直後に2つ目のコマンドを実行し始めるので、微妙なタイムラグが発生するみたい。つまり、本当に同時に2つ以上のコマンドを実行するというのは不可能なようだ。

関連記事

    None Found

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

comments

Leave a Reply

retaggr