RTSync Tutorial 1 - An Overview of RTSync

As technology progresses in the world, standard computer programs cannot easily perform the tasks that problems require. Computer programs take a certain amount of time to do their computations and sometimes this time is not a realistic timeframe for the real world. A system with stricter timing constraints is required for such a problem. An example of such a problem is a computer program that is driving a car. If the program cannot recognize that it is about to drive into a tree before it hits the tree, then it is not a very useful program. However if this same program sees a turn in the road up ahead, realizes the turn is there immediately and immediately turns before it actually gets to the turn, this is also not especially desirable.

It is possible for a computer program to program these time constraints using a standard language, however it would be much more efficient for a programmer to use a language that has these constructs already built-in. RTSync provides this with a system of actors and synchronizers, while keeping the familiar syntax of C++.

The system can be thought of as a graph where the nodes of the graph are the actors and the edges of the graph are the synchronizers. This is similar to an object-oriented construct, the actors are analogous to the objects in an object-oriented language. The difference here is the presence of synchronizers that handle the method calls between actors. In object-oriented languages, the method calls are not as constrained as they are under RTSync. A synchronizer can enable/disable methods, execute code upon certain method calls, and perform time-constraining actions to allow the method calls to follow a real-time pattern.

Another task that many languages cannot inherently do is run in a distributed fashion. A program that can run concurrently on several computer has major performance benefits over a program that is only running on one computer. RTSync also allows for distributed programs. When an actor calls a method of another actor, the other actor does not need to be on the same computer as the actor that is calling the method. RTSync manages the networking through it's run-time environment. The programmer does not need to know much about networking to do this, they simply need to provide an IP address and a port that connects to a computer that is currently running the program.