shell并发小程序

之前一直只懂的并发,但不懂的如何控制线程数,今日一试,果然有所启发。

#!/bi/bash
#exec &6>-&和exec 1000<&- 是关闭fifo的意思, 我们生成做绑定时 可以用 exec 6<>fifo 来实现,但关闭时必须分开来写> 读的绑定,< 标识写的绑定  <> 则标识 对文件描述符6的所有操作等同于
#对管道文件fifo的操作。
#
#
mkfifo fifo 创建管道文件
exec 6<>fifo  绑定管道符
rm fifo 删除管道文件


for ((i=1;i<=10;i++));
do
echo  >&6 向管道符中写入十个空格作为并发数
done


i=0
while read line 每读取aa.txt 中的一行,就会执行do下的内容
do
((i++))
read -u 6
       {        
        echo $i
        echo "4654655"
        sleep 3 这里可以检测每次并发数量
        echo  >&6  任务执行完成,就会向管道符中插入一个空格,任务就会调起一个,不会停滞。
}&
done < /root/zqq/aa.txt          aa.txt 是1000行的文件

wait
exec &6<-
exec &6>- 关闭管道

987
4654655
988
4654655
989
4654655
990
4654655
991
4654655
992
4654655
993
4654655
994
4654655
995
4654655
997
4654655
996
998
4654655
4654655
999
4654655
1000
4654655


real 0m10.078s
user 0m0.056s
sys 0m0.144s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值