思路就是建立乙個管道,往裡面寫入固定行數的資料,當程序進行操作之前先讀取一行,執行完操作寫入一行。即可實現可控程序數的併發操作。注意這個思路和訊號量的概念類似。
#!/usr/bin/bash
#ping02
thread=8
tmp_fifofile=/tmp/$$.fifo
mkfifo $tmp_fifofile
exec 8<> $tmp_fifofile
rm $tmp_fifofile
#注意上面雖然刪除檔案了,但是檔案描述符8還是在的
for i in `seq $thread`
do#注意&8就相當於檔案描述符8,下面這句話的作用是向檔案中寫入8個回車
echo >&8
done
for i in
do read -u 8
#注意,只有當上面的這一行可以讀到東西才會執行下面的迴圈
&done
wait
exec 8>&-
echo "all finish..."
shell佇列實現執行緒併發控制
請看原文 需求 併發檢測1000臺web伺服器狀態 或者併發為1000臺web伺服器分發檔案等 如何用shell實現?方案一 這應該是大多數人都第一時間想到的方法吧 思路 乙個for迴圈1000次,順序執行1000次任務。bin bash start time date s 定義指令碼執行的開始時間...
Shell 五 併發控制
file descriptors fd,檔案描述符 或 檔案控制代碼 程序使用檔案描述符來管理開啟的檔案 root tianyun ls proc fd 0 1 2 3 4 0,1,and 2,known as standard input,standard output,and standard ...
shell指令碼併發控制詳解
file descriptors fd,檔案描述符或檔案控制代碼 程序使用檔案描述符來管理開啟的檔案 檢視當前程序的fd 確定以下三點 如何exec開啟乙個檔案 exec 3 file1.txt 如何exec關閉乙個檔案 釋放檔案控制代碼 如果沒有釋放控制代碼,檔案刪除後描述符依然還在 exec 3...