Nice programing

Bash의 멀티 스레딩

nicepro 2020. 10. 25. 13:00
반응형

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

반응형