A few of the flight simulators I work with use a novel software framework developed inhouse by the manufacturer. I'm curious if any of you can
identify something similar.
The convential approach for commercial flight simulators is to use a large shared memory to hold the state of the simulation, and a game loop. Hardware interface signals are fed into that shared memory, and every iteration of the game loop executes software that reads and updates the shared memory.
The novel approach uses no shared memory. When a hardware input signal changes, it raises an "event" consisting of a name and value. The
software then raises any other events that depend on this one. They have created a programming language to get the most from this. In that language, say you have:
a = b + c
d = e + f
These two lines will NOT get executed in sequence. They declare relationships between events. When event "b" occurs, the event "a" will be raised and its value depends on b and also the last value of the c event.
It turns out this is really powerful and works well on a distributed system. Did they create something new here?
This is actually a fantastic model for distributed systems and was implemented in the Erlang programming language for that very purpose. It is the other major model of concurrent computing outside of having some kind of shared memory space (in a true actor model there is no shared mutable data).