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
'Nice programing' 카테고리의 다른 글
SourceTree에서 커밋되지 않은 변경 사항을 버리는 방법은 무엇입니까? (0) | 2020.10.25 |
---|---|
SQL Server에서 주어진 테이블에 대해 CREATE TABLE 문을 어떻게 생성합니까? (0) | 2020.10.25 |
인 텐트를 통해 이메일 프로그램을 여는 방법 (이메일 프로그램 만 해당) (0) | 2020.10.25 |
모든 요소에서 클래스를 제거하는 방법 jquery (0) | 2020.10.25 |
Visual Studio 2012의 작업 목록에 표시되지 않는 할일 작업 (0) | 2020.10.25 |