Message ordering for serial flow::function_node

Starting with Intel® Threading Building Blocks 2019, the message passing order for function_node, whose concurrency argument is set to 1, is relaxed. Incoming messages are still processed in FIFO order, however outgoing messages might get reordered when sent to node successors.

To restore the order of message passing further in the graph, use sequencer_node.

If you cannot use sequencer_node but still wish to keep FIFO semantics for incoming and outgoing messages, you can enable the deprecated behavior by setting the preprocessor symbol TBB_DEPRECATED_MESSAGE_FLOW_ORDER to a non-zero value.

CAUTION

Enabling deprecated behavior might reduce parallelism available in the graph.

For more complete information about compiler optimizations, see our Optimization Notice.