I understand the problem with
flooding can be serious in an application with unidirectional data
Perhaps we have a different perception of how common that is.
Ashley speculated it was a "significant minority." I don't know what
that means, but it seems like it is a minority (most computations have
causal relationships among the processes holding unbounded imbalances
in check) and yet we end up seeing these exceptions.
I think that
adding some flow control to the application is a better solution than
It seems to me there is no difference. Flow control, at this level, is
just semantically redundant synchronization. A barrier is just a
special case of that.