作者abliou (把青春freeze)
看板Perl
标题Re: [问题] 同时丢很多程式, 但是要等它跑完....
时间Wed Apr 20 23:59:52 2011
※ 引述《jumpings (姜饼)》之铭言:
: 就是呢, 为了要加快速度, 我同时要丢很多个软体一起跑,
: 我是用 & 丢到背景来完成的, 但是我程式要等这些软体跑完,
: 才能去 parse output, 这样程式要怎麽写 ?
: 举例来说, 我要执行A软体三次, 但是输入档案不一样, 如下 :
: system "A input1 &";
: system "A input2 &";
: system "A input3 &";
: 接着我要读 output1, output2, output3, 但是如果我这时候写 :
: read output1;
: read output2;
: read output3;
: 这时候 output 都还没有出来, 所以会读不到档案, 有没有什麽办法
: 可以让软体丢到背景之後等待, 然後等跑完再继续执行 ?
: 感谢大家的回覆....
本来有想过用pid 不过pid支援度只有在UNIX like的作业系统支援度才会比较好
(事实上我以前做过的实验 在win32系统上没有成功过 那是几年前的事)
所以如果真的想丢多执行绪的话 就还是用多执行绪的模组试看看
psudocode大概是这样
=====
use 5.010 ;
use threads ;
$th1 = threads->create(\&sendjob , input1) ;
$th2 = threads->create(\&sendjob , input2) ;
$th3 = threads->create(\&sendjob , input3) ;
$th1->join ;
$th2->join ;
$th3->join ;
read output1;
read output2;
read output3;
sub sendjob{
system "A $_[0]" ;
}
--
如果青春注定要向前跑
他妈的...那我的出口在那?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.80.154.230
※ 编辑: abliou 来自: 111.80.154.230 (04/21 00:17)