ステップA、B、Cで構成されるビルダーがあります。ステップU、V、およびWで構成される2番目のビルダー:ステップAとBが終了するまで、ステップUを「ブロック」するにはどうすればよいですか?したがって、基本的には、ステップCとUを互いに並行して実行する必要があります。
私の最初のアイデアは、2つのインターロックaとbを導入することでした。ステップAはロックaを要求し、ステップBはロックbを要求し、ステップUは同時にaとbを要求します。
しかし、この状況では、実行順序はA-> U-> Bであり、私が望むようにA->B->Uではありません。理由:手順はロックに対して貪欲です。ステップUは、ロックaのためにブロックされていますが、それにもかかわらず、ロックbが必要です。そして、これはステップUが終了するまでステップBをブロックします。