使用Shell實現併發控制

2021-10-25 08:52:42 字數 566 閱讀 9640

思路就是建立乙個管道,往裡面寫入固定行數的資料,當程序進行操作之前先讀取一行,執行完操作寫入一行。即可實現可控程序數的併發操作。注意這個思路和訊號量的概念類似。

#!/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...