Многопоточность в Bash [дубликат]



этот вопрос уже есть ответ здесь:



Я хотел бы представить функцию многопоточности в мой сценарий оболочки.



У меня есть скрипт, который вызывает функцию read_cfg() с разными аргументами.
Каждая из этих функций звонки независимы.



можно ли создавать экземпляры этих вызовов функций (а не скриптов) параллельно.
Пожалуйста, позвольте мне, как мы можем достичь этого.. ?

664   3  

3 ответов:

конечно, просто добавить & после команды:

read_cfg cfgA &
read_cfg cfgB &
read_cfg cfgC &
wait

все эти задания будут выполняться в фоновом режиме одновременно. Необязательный элемент wait команда будет ждать завершения всех заданий.

каждая команда будет выполняться в отдельном процессе, поэтому технически это не "многопоточность", но я считаю, что это решает вашу проблему.

можно запустить несколько копий скрипта параллельно, каждая копия для разных входных данных, например, для обработки всех *.cfg файлы на 4 ядрах:

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

read_cfg.sh скрипт принимает только один параметр (в соответствии с-n)

управление заданием Bash включает в себя несколько процессов, а не несколько потоков.

вы можете выполнить команду в фоновом режиме с & суффиксом.

вы можете дождаться завершения фоновой команды с помощью

Comments

    Ничего не найдено.