shell 多线程
普通多線程(準(zhǔn)確的講應(yīng)該是多進(jìn)程),這種模式 并發(fā)大的時(shí)候會(huì)報(bào)錯(cuò),影響運(yùn)行速度
不可控制線程的數(shù)量
#!/bin/bashfor i in {1..254}do#后臺(tái)運(yùn)行,每次都創(chuàng)建新的線程(進(jìn)程)
{ip=192.168.179.$iping -c1 -W1 $ip &> /dev/nullif [ $? -eq 0 ];thenecho "$ip is up!!"elseecho "$ip is down"fi}&donewaitecho "all funish..."
?
文件描述符多線程(準(zhǔn)確的講是多進(jìn)程),可以控制線程的數(shù)量
#!/bin/bash #線程數(shù) thread=5#零時(shí)文件 tmp_fifofile=/tmp/$$.fifo #創(chuàng)建管道文件 mkfifo $tmp_fifofile
#打開(kāi)管道文件設(shè)置描述符為8,也可以是其他 exec 8<> $tmp_fifofile
#刪除文件,文件刪除,文件描述符還是存在的,主要用到了文件描述符(文件沒(méi)有用就刪除了) rm $tmp_fifofilefor i in `seq $thread`do
#文件描述符寫(xiě)入空格占位(寫(xiě)入其他內(nèi)容也可以,只要寫(xiě)入就能占位 echo >&8 donefor i in {1..254}do #讀取文件描述符read -u 8{ip=192.168.179.$iping -c1 -W1 $ip &> /dev/nullif [ $? -eq 0 ];thenecho "$ip is up!!"elseecho "$ip is down"fi #讀取完,再寫(xiě)入占位,放入管道echo >&8}&done #等待線程 wait
#釋放文件描述符
exec 8>&-echo "all funish..."
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhoufly-blog/p/11456122.html
總結(jié)
- 上一篇: abaqus 不收敛问题
- 下一篇: 软件需求说明书怎么写