This is an attempt to define an Actor system where some actors can make synchronous calls to others. It tries to keep blocking on the margins — where it is more tolerable — and to not allow anything that could cause deadlocks.
There are two basic rules to add to the current actor pitch:
- Actors can have a parent actor chosen when initializing the actor.
- A child actor can call synchronously methods of its parent actor.
A typical application could look like this. The Main thread actor has child task actors, which can have subtasks: