Linux系统运维:http://www.linuxyw.com,QQ交流群:244914685

Linux系统运维

当前位置: 首页 > 脚本 >

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

时间:2013-04-03 23:20来源:转载 作者:网络 点击:
} #注意这里要放到后台,也就是说echo $i这个你的应用有13个是几乎同时在后台执行的,为什么是13个呢?当for循环完13次后会挂起,因为管道已经空了,

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



         } &    #注意这里要放到后台,也就是说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/jiaoben/20130403/14.html

顶一下
(2)
100%
踩一下
(0)
0%
分享按钮
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片