gzpk

bash fifo管道使用测试例子

碰到一个场景:

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

 

posted on 2015-08-05 11:43  gzpk  阅读(734)  评论(0编辑  收藏  举报

导航