shell类似线程数组操作
2019-06-22 本文已影响0人
悟剑声
#!/bin/bash
//通过管道的记录和读写 相当于实现了线程数组或者算是线程池
//总操作次数,和同时存在线程数
THREAD_NUM=100000
THREAD_ARRAY=80
//创建并标识管道
Tmp=tmp
Res=result.log
rm -f $Tmp
rm -f $Res
mkfifo tmp
exec 9<>tmp
//向管到添加内容 通过读写实现在线线程数的稳定
for(( i=0; i<$THREAD_ARRAY; i++))
do
echo -ne "\n" 1>&9
done
echo "running... $(date +%s%N)"
//按照总次数操作线程
for(( i=0; i<$THREAD_NUM; i++))
do
{
read -u 9
{
sleep 1
echo "running....."
echo -ne "\n" 1>&9
}&
}
done
wait
echo "exec end. $(date +%s%N)"