source

Bash의 멀티스레딩

ittop 2023. 5. 2. 22:59
반응형

Bash의 멀티스레딩

저는 제 셸 스크립트에 멀티스레딩 기능을 도입하려고 합니다.

함수를 호출하는 스크립트가 있습니다.read_cfg()다른 주장으로이러한 각 함수 호출은 독립적입니다.

스크립트가 아닌 이러한 함수 호출을 병렬로 인스턴스화할 수 있습니까?어떻게 하면 그것을 달성할 수 있을까요?

네, 그냥 추가하세요.&명령 뒤:

read_cfg cfgA &
read_cfg cfgB &
read_cfg cfgC &
wait

그러면 모든 작업이 동시에 백그라운드에서 실행됩니다.선택 사항wait그러면 명령이 모든 작업이 완료될 때까지 기다립니다.

각 명령은 별도의 프로세스로 실행되므로 기술적으로 "멀티스레딩"은 아니지만 문제를 해결할 수 있다고 생각합니다.

스크립트의 여러 복사본을 병렬로 실행할 수 있으며, 각 복사본은 서로 다른 입력 데이터에 대해 실행할 수 있습니다(예: 4개의 코어에서 모든 *.cfg 파일을 처리하는 경우).

    ls *.cfg | xargs -P 4 -n 1 read_cfg.sh

read_cfg.sh 스크립트는 매개 변수 하나만 사용합니다(-n에 의해 적용됨).

Bash 작업 제어에는 여러 스레드가 아닌 여러 프로세스가 포함됩니다.

를 사용하여 백그라운드에서 명령을 실행할 수 있습니다.&접미사

를 사용하여 백그라운드 명령이 완료될 때까지 기다릴 수 있습니다.wait지휘권

여러 명령을 다음과 같이 구분하여 병렬로 실행할 수 있습니다.|이것은 또한 동기화 메커니즘을 제공합니다, 왼쪽에 있는 명령의 stdout.|오른쪽에 있는 명령의 stdin에 연결되어 있습니다.

언급URL : https://stackoverflow.com/questions/2425870/multithreading-in-bash

반응형