当前位置: 主页 > 脚本 > Shell >

shell多线程并发,并控制线程数量(2)

时间:2013-04-03 23:20来源:转载 作者:网络 点击:
} #注意这里要放到后台,也就是说echo $i这个你的应用有13个是几乎同时在后台执行的,为什么是13个呢?当for循环完13次后会挂起,因为管道已经空了,
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……



         } &    #注意这里要放到后台,也就是说echo $i这个你的应用有13个是几乎同时在后台执行的,为什么是13个呢?当for循环完13次后会挂起,因为管道已经空了,read -u6会暂时挂起,直到管道中有了空行。由于本commands block(即{}中的内容)是放在后台执行的,可以理想的看成这13次循环是同时执行的,大家同时sleep了3秒,而又同时向管道中输入了空行,所以管道在读空之后差不多3秒的时候又瞬时多了13次空行,使得read -u6能够继续读行,for循环得以继续执行。

        pid=$!                                 #  $!代表在后台执行的最后一个进程。
        echo "$pid"                            #打印最后一个进入后台的子进程id;打印的pid结果印证了非并发,非多线程。

done

wait   #等到后台的进程都执行完毕。

exec 6>&-                                    #删除文件描述符6

exit 0

转载请注明linux系统运维
http://www.linuxyw.com/linux/Shell/Shell/20130403/14.html

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片