在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是一个在左边的命令 连接到命令的标准在右边。