if
在 bash 脚本中多线程独立语句的正确方法是什么?是否最好将包含在表达式中或之后的&
后代码?if
对于after 表达式,如果它包含大量代码&
,则根据需要继续线程化是有意义的。if
但是一行代码也应该以&
?
表达式后:
if [ expression ] &
then
#task
fi
任务结束后:
if [ expression ]
then
#task &
fi
想象一下 3 个if
语句,它们都执行彼此独立的任务,执行如何在不同位置的情况下工作&
?据我了解,如果放在表达式之后,所有 3 个表达式(基本上)同时开始,这 3 个任务也是如此。
#Thread 1 #Thread 2 #Thread 3
if [ expr1 ] & if [ expr2 ] & if [ expr3 ] &
then then then
task1 task2 task3
fi fi fi
wait
如果放置在任务代码之后,if
将评估第一个任务,并且只有在第一个任务开始时才会if
评估第二个任务。这些任务比同时进行的更交错。
#Thread 1 #Thread 2 #Thread 3
if [ expr1 ]
then
task1 & if [ expr2 ]
fi then
task2 & if [ expr3 ]
fi then
task3 &
fi
wait
表达式不能组合以在if
诸如以下的内部进行线程化:
if [ combined expression ]
then
#task1 &
#task2 &
#task3 &
fi