碰到一个场景:
一个脚本内起了多个后台线程,往一个日志文件写日志,结果因为线程之间争抢写锁,导致脚本执行效率很低,为了解决这个问题,希望减少写锁的争抢,尝试使用fifo解决该问题,以下是实验用例子。
#!/bin/bashfifo_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
转载于:https://www.cnblogs.com/ManMonth/p/4704298.html