Shell脚本中的并发(2)

来源:互联网 发布:淘宝不能上传新图片 编辑:程序博客网 时间:2024/05/24 01:57

续 Shell脚本中的并发(1)

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


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

参考如下程序:

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

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