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個字符串,然後每從管道內讀出一個字符串就生成一個子進程,當管道內沒有字符串可讀時就阻塞在那裏,不能創建新的子進程,一直等到有新的字符串進來時才繼續運行。當每個併發進程執行完畢時又向管道內寫入一個字符串,表示當前子進程已執行完畢,可以創建新的子進程了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章