shell 多线程

实测发现也就那样,在有sleep的时候确实比for循环快,但是把sleep 去掉就没有for快了,真垃圾,根据场景选择

real    1m53.050s
user    0m0.589s
sys    0m1.061s
[root@localhost ~]# time for i in `seq 1 100`;do curl -s -I "http://www.baidu.com/"|wc -l;sleep 1; done
#!/bin/bash
THREAD_NUM=5
TMP_FILE="/tmp/$$.fifo"

trap "exec 6>&-;exec 6<&-;exit 0" 2    

mkfifo ${TMP_FILE}  
exec 6<>${TMP_FILE} 
rm -rf ${TMP_FILE}
 
for ((J=1;J<=${THREAD_NUM};J++)) 
do
    echo >&6
done

localfunc(){
   #echo "${I}: success" 
   curl -s -I "http://www.baidu.com/"|wc -l
   sleep 1
}

for ((I=1;I<=100;I++))
do 
    read -u6 
    {
        #echo "${I}: success" ; sleep 1
        localfunc
        echo >&6    
    }&
done
wait

 
exec 6>&-
exec 6<&-



real	0m24.407s
user	0m0.576s
sys	0m1.059s
time sh shss.sh

 

参考:https://www.dazhuanlan.com/realpanda/topics/978898

https://www.cnblogs.com/old-path-white-cloud/p/11685558.html

原文地址:https://www.cnblogs.com/bill2014/p/15578337.html