碰到一个场景:
一个脚本内起了多个后台线程,往一个日志文件写日志,结果因为线程之间争抢写锁,导致脚本执行效率很低,为了解决这个问题,希望减少写锁的争抢,尝试使用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
时间: 2024-10-28 19:51:26