Shell脚本中的并发(2)

续 Shell脚本中的并发(1)

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


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

参考如下程序:

#!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
 

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



你可能感兴趣的:(并发,脚本,控制,进程个数)