Dynamic Dataflow Networks are a Boolean Dataflow Networks with one additional variation: the control actors mentioned in the BDF model can now read multiple token values and the data actors can be fired conditionally based on the control actors read. Although dynamic scheduling might also be used for any of the previous models, it is a must for this model as production/consumption rates may vary during execution.
Dynamic scheduling can be classified as data-driven (eager execution), demand-driven (lazy execution) or a combination of the two. In eager execution a process is activated as soon as it has enough data as required by any of its firing rules. In lazy execution a process is activated only if the consumer process does not have enough data tokens. When using bounded scheduling (see [Parks, 1995]) three rules must be applied: (a) a process is suspended when trying to read from an empty input, (b) a process is suspended when trying to write onto a full queue and (c) on artificial deadlock, increase the capacity of the smallest full queue until its producer can fire.