У меня есть строитель, который состоит из шагов A, B и C; и второй компоновщик, который состоит из этапов U, V и W: как я могу «заблокировать» этап U до завершения этапов A и B? Поэтому я хочу, чтобы шаги C и U проходили параллельно друг другу.
Моя первая идея состояла в том, чтобы ввести две блокировки, a и b: шаг A требует блокировки a, шаг B требует блокировки b, а шаг U требует одновременно a и b.
Но в этой ситуации порядок выполнения A-> U-> B, а не A-> B-> U, как я хочу. Причина: ступени жадны к замкам. Шаг U заблокирован из-за блокировки a, но, несмотря на это, он требует блокировки b. И это блокирует шаг B до завершения шага U.