can cause Structural Hazards. Structural Hazard: Cannot proceed with an operation because a resource is in use. To overcome hazards we must use shedulling and arbitration:
One schedulling decision impacts on another: ideally need to find a global optimum.
The schedulling and arbitration operations can often be done at compile time, (e.g. for operations performed by a single behavioural thread).
Remainder must be done at run time according to actual input data since the relative interleaving of different threads is often unpredictable.