我想让我的代码的一部分更加高效。我正在考虑让它分叉成多个进程,并让它们一次执行 50/100 次,而不是只执行一次。
例如(伪):
for line in file;
do
foo;
foo2;
foo3;
done
我希望这个 for 循环运行多次。我知道这可以通过分叉来完成。它看起来像这样吗?
while(x <= 50)
parent(child pid)
{
fork child()
}
child
{
do
foo; foo2; foo3;
done
return child_pid()
}
或者我以错误的方式思考这个问题?
Thanks!
在 bash 脚本(非交互式)中,默认情况下,作业控制处于禁用状态,因此您无法执行以下命令:job、fg 和 bg。
这对我来说效果很好:
#!/bin/sh
set -m # Enable Job Control
for i in `seq 30`; do # start 30 jobs in parallel
sleep 3 &
done
# Wait for all parallel jobs to finish
while [ 1 ]; do fg 2> /dev/null; [ $? == 1 ] && break; done
最后一行使用“fg”将后台作业带入前台。它循环执行此操作,直到 fg 返回 1 ($? == 1),当不再有任何后台作业时,它就会执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)