One of the criticisms of monitors is that condition synchronization is too lowlevel and unstructured. Explain what is meant by this statement. A higher level monitor synchronization primitive might take the form
Waituntil boolean_expression;
where the task is delayed until the boolean expression evaluates to true. For example:
Waituntil $x<y+5$;
would delay the task until $x<y+5$.
Although this form of condition synchronization is more structured it is not found in most languages which support monitors. Explain why this in the case. Under what circumstances would the objections to the above high-level synchronization facility be invalid? Show how the bounded buffer problem can be solved using the waitUntil synchronization primitive inside a monitor.