0

AとBの2つのプロジェクトをダウンロードする必要があります。最終結果はBプロジェクトのビルドですが、プロジェクトAがインストールされている場合にのみビルドできます。

したがって、私が完了する必要があるタスクは次のとおりです。

  1. ダウンロードA
  2. Bをダウンロード
  3. AをビルドしてからAをインストールする
  4. B をビルドしてから B をインストールする

1 と 2 は同時に実行でき、2 と 3 は同時に実行できます。

プログラミングの従来の方法は次のとおりです。

1 && 3
2 && 4

はるかに速く終了できるシェルをプログラムするより良い方法はありますか?

( (1 && 3 )  & 2 )  && 4    // is there possible? or will this be quicker than the former one?

これらのタスクを同時に実行する方法は何ですか?

4

2 に答える 2

1

各 &&-list をバックグラウンドに置いて、従来の方法を使用できます (正しい依存関係を指摘してくれた William に感謝します)。

1 && 3 &
2 && wait && 4

まず、リスト1 && 3をバックグラウンドで実行します。ジョブ 3 は、ジョブ 1 が正常に完了するまで開始されません。

次に、バックグラウンドで新しいリストを開始します。このリストはジョブ 2 を実行し、成功した場合は を呼び出します。これは、すべてのバックグラウンド ジョブが終了waitするのを待ちます。(正確なシーケンスはよくわかりませんが、それが含まれているバックグラウンドジョブを待機しないようです。ジョブが完了するのを待っているデッドロックのケースがあるため、これは良いことです更新:コマンドがバックグラウンド コマンドをバックグラウンド ジョブとして認識できるように、2 番目のリストはフォアグラウンドで実行する必要があります。waitwait

于 2012-09-05T21:46:09.787 に答える