您的位置:首页 > 运维架构 > Shell

shell并发小程序

2016-09-25 15:06 76 查看
之前一直只懂的并发,但不懂的如何控制线程数,今日一试,果然有所启发。

#!/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 并发 线程