在Bashmultithreading
我想在我的shell脚本中引入multithreadingfunction。
我有一个脚本,用不同的参数调用函数read_cfg()
。 每个函数调用都是独立的。
是否有可能并行地实例化这些函数调用(不是脚本)。 请让我怎么做到这一点..?
当然,只需在命令后面添加&
添加:
read_cfg cfgA & read_cfg cfgB & read_cfg cfgC & wait
所有这些工作将同时在后台运行。 可选的wait
命令将等待所有的工作完成。
每个命令将在一个单独的进程中运行,所以从技术上讲它不是“multithreading”,但我相信它解决了你的问题。
您可以并行运行多个脚本副本,每个副本可以处理不同的input数据,例如处理4个核心上的所有* .cfg文件:
ls *.cfg | xargs -P 4 -n 1 read_cfg.sh
read_cfg.sh脚本只需要一个参数(由-n强制执行)
Bash作业控制涉及多个进程,而不是多个线程。
您可以使用&
后缀在后台执行命令。
您可以等待使用wait
命令完成后台命令。
您可以通过使用|
分隔来并行执行多个命令 。 这也提供了一个同步机制,因为stdout是一个在左边的命令 连接到命令的标准在右边。