Shell脚本中的并发(2)

转载 http://blog.csdn.net/wangtaoking1/article/details/9965271

上篇主要是写的如何在Shell脚本中编写并发程序,这次写一下如何控制进程的数量。


在网上参考了一下别人的方法,主要都是利用管道的思想。

参考如下程序:


  1. #!bin/bash  
      
    PRONUM=10               #进程个数  
      
    tmpfile="$$.fifo"        #临时生成管道文件  
    mkfifo $tmpfile  
    exec 6<>$tmpfile  
    rm $tmpfile  
      
    for(( i=0; i<$PRONUM; i++ ))  
    do  
            echo "init."  
    done >&6  
      
    for(( i = 0; i < ${count}; i++ ))  
    do  
            read line  
            #echo $line  
            {  
                    commands  
                    echo "line${i} finished."  
            } >&6 &  
    done <&6  
      
    wait
  2.    


初始时给管道内写入PRONUM个字符串,然后每从管道内读出一个字符串就生成一个子进程,当管道内没有字符串可读时就阻塞在那里,不能创建新的子进程,一直等到有新的字符串进来时才继续运行。当每个并发进程执行完毕时又向管道内写入一个字符串,表示当前子进程已执行完毕,可以创建新的子进程了。


你可能感兴趣的:(shell.并发)