Actors And Flow Based Programming Discussion

This is the discussion that led to the summary at ActorsModel comparing actors with FlowBasedProgramming:

There are very close parallels between FlowBasedProgramming (FBP) and Actors. Communication between asynchronous processes is by way of InformationPackets (= messages) travelling across BoundedBuffer connections. So, just like Actors, FBP does not allow any process to be affected except by way of an incoming InformationPacket. In the implementation with which we have most experience, we did provide a "named global" facility, but because of the asynchronism of the system, this could only safely be used for read-only data. In practice it was mostly used for shared reference tables. Besides we told our programmers that GlobalVariablesAreBad!

Actors can receive messages from any sender; CSP processes must explicitly name the sending process.

FBP processes can only receive IPs from processes they are connected to ("acquaintances" in Actors terminology).

In actors, the acquaintance relation is asymmetric. A can "know about" B (so that B is an acquaintance of A) without B "knowing about" A. Is this true of FBP?

In FBP there is an additional level of indirection, so maybe A and B are not exactly acquaintances: A and B communicate via named ports, and the connection between an output port of A and an input port of B is defined (by the application builder) in a separate specification, so it is the application builder's responsibility to know whether B can handle A's output, and to connect transform processes in between if they are required. Connections are only one-way -- if A needs feedback from B, it must use a separate connection. The port mechanism is what gives FBP the attribute of ConfigurableModularity.


Messages are buffered in the actor model; in CSP, the sender is delayed until it synchronizes with the receiver.

Messages are also buffered in FlowBasedProgramming.

EditText of this page (last edited April 1, 2014) or FindPage with title or text search