How communal processing works:

Communal means community. In a community, players play nice with each other. Those that don't play nice ruin it for everyone. If a player is not going to play nice, then that player belongs in the "distinct" playground.

The Task is the heart of processing. A Task contains the variables/methods Tymeac needs to multitask requests. All user classes must extend this class. A Task can be

actively computing a stream or

timed-waiting for a resource (database/file access, internet access, or other service access) The timeout is a way to handle non-responsive accesses,

waiting for a send to complete (onNext, etc.)

While that Task is waiting for something, Tymeac can put the Task in suspension freeing the thread for other work. This is simple task-management that most operating systems use to schedule work on processors. Tymeac cannot do a context-switch. Tymeac relies on the Task cooperating by the Task setting pending action (need a send, need a resource) and returning from the method call rather than blocking.

Tymeac uses three queues: Active, Sending and Suspended. Each Queue has a dedicated thread pool.

The Active Queue is for threads to fetch Tasks [low CPU usage Publishers and subscriber-objects] so the Tasks may compute that which they do. When a Task needs a resource the Task starts the asynchronous access, sets an estimated delay time it believes the access may take (the pending action here is a delay to await completion) and returns unless it also needs to send data. When a Task needs to send a stream (onNext, etc.) the Task sets a send-pending (the pending action) and returns. If there is a send-pending, Tymeac moves the Task to the Sending Queue. If there is no send-pending but there is a delay pending Tymeac moves the Task to the Suspended Queue. The Sending Queue is for threads to fetch Tasks and use the Subscriber<T> to send the asynchronous stream (onNext/Error/Completed.) Once the send is complete Tymeac moves the Task back to the Active Queue, or, if there is still a delay outstanding, Tymeac moves the Task to the Suspended Queue. The Suspended Queue is for waiting for an event to complete (delay to elapse or one of those asynchronous accesses to complete.) Once the event finishes, Tymeac moves the Task back to the Active/Distinct Queue.