Многопоточность в Bash [дубликат]
этот вопрос уже есть ответ здесь:
Я хотел бы представить функцию многопоточности в мой сценарий оболочки.
У меня есть скрипт, который вызывает функцию read_cfg() с разными аргументами.
Каждая из этих функций звонки независимы.
можно ли создавать экземпляры этих вызовов функций (а не скриптов) параллельно.
Пожалуйста, позвольте мне, как мы можем достичь этого.. ?
3 ответов:
конечно, просто добавить
&после команды:read_cfg cfgA & read_cfg cfgB & read_cfg cfgC & waitвсе эти задания будут выполняться в фоновом режиме одновременно. Необязательный элемент
waitкоманда будет ждать завершения всех заданий.каждая команда будет выполняться в отдельном процессе, поэтому технически это не "многопоточность", но я считаю, что это решает вашу проблему.
можно запустить несколько копий скрипта параллельно, каждая копия для разных входных данных, например, для обработки всех *.cfg файлы на 4 ядрах:
ls *.cfg | xargs -P 4 -n 1 read_cfg.shread_cfg.sh скрипт принимает только один параметр (в соответствии с-n)
управление заданием Bash включает в себя несколько процессов, а не несколько потоков.
вы можете выполнить команду в фоновом режиме с
&суффиксом.вы можете дождаться завершения фоновой команды с помощью
Comments