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
#!/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写的俄罗斯方块程序(转)
- 如何用Shell实现程序组快捷方式的添加
- kshen转Unix系列shell程序编写(上)
- Unix系列shell程序编写(全)
- Unix系列shell程序编写(中)
- 定制404错误页面,并发信给管理员的程序
- kshen转Unix系列shell程序编写(中)
- Unix系列shell程序编写(下)
- 一个Shell程序
- 在SHELL程序中实现“按任意键继续”
- ORACLE数据导入Shell程序
- Unix系列shell程序编写(上)
- Unix系列shell程序编写(下)
- shell脚本程序的简单介绍及应用
- crontab结合用PHP编写的shell完成自动更新数据的程序
- 我的第一个shell程序
- ORACLE数据导出Shell程序
- kshen转Unix系列shell程序编写(下)
- Unix系列shell程序编写(上)
- Unix系列shell程序编写(下)