A computer in which the primitive operations are triggered by the availability of inputs or operands. In a classical von Neumann machine, there is the concept of sequential flow of control, and an operation (i.e. instruction) is performed as and when flow of control reaches that operation. By contrast, in a dataflow machine there is a flow of data values, from operations that produce those values to operations that “consume” those values as operands. An operation is triggered as soon as all its operands are available. Since the result of one operation can be an operand to many other operations, and hence can potentially trigger many operations simultaneously, there is the possibility of a high degree of parallelism.
Dataflow machines are one of the major examples of non von Neumann architectures, and are of considerable research interest. They are usually programmed in a single-assignment language or a declarative language. Traditional imperative programming languages, which prescribe a particular flow of control, are poorly suited to dataflow machines.