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