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

bash fifo管道使用测试例子

2015-08-05 11:43 399 查看
碰到一个场景:

一个脚本内起了多个后台线程,往一个日志文件写日志,结果因为线程之间争抢写锁,导致脚本执行效率很低,为了解决这个问题,希望减少写锁的争抢,尝试使用fifo解决该问题,以下是实验用例子。

#!/bin/bash
fifo_file=fifo.pipe
mkfifo $fifo_file
exec 6<>$fifo_file
rm $fifo_file
# 随便一个写了一个生成数据的函数
DateWrite ()
{
i=0
while [ $i -lt 1000 ]
do
str=`date`
i=$(( i+1 ))
echo "$i $str"
done
}
# 起100个后台线程,往管道写数据
for  (( i=0; i<100; i++ ))
do
( DateWrite >&6 ) &
done

#以下逻辑用于一直从管道中读取数据
while read date_time
do
echo $date_time >> output.file
done <&6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: