shell脚本中实现多线程

发布时间 2023-03-24 11:05:31作者: 草原悍匪
#并发大小
threadNum=10

concurrent_common(){
fileName=$1


#生成临时管道文件
mkfifo sdbfifo

exec 7<> sdbfifo
rm -rf sdbfifo

for i in $(seq 1 ${threadNum})
do
    echo >&7
done



while read line
do
  read -u7
  {
    ##TODO something
    ## 业务逻辑
    sleep 3
    
    echo >&7
  }&
done < ${fileName} 

#loop end
wait  #等待上面所有后台进程结束
exec 7>&- ## 重新写入管道进程符号

echo "task over"
}