Core threading types based on System.Threading.Channels: EventProcessor, StateMachine, ExecutionQueue and Sequencer - a scheduler that coordinates the execution of synchronous and asynchronous tasks using a hierarchical key that defines their relative concurrency.
$ dotnet add package LabApps.Threading.CoreA thread-safe counter that signals each time zero is crossed (in either direction) via a completion task. Can be used in hierarchies of counters.
An abstract base class that uses System.Threading.Channels to implement a single threaded consumer of events.
A derivation of EventQueueBase. Events are IExecutable. Execute() is called for each event.
A derivation of EventQueueBase. Events are passed to a provided implementation of IEventHandler.
A derivation of EventQueueBase. Each event and current state are passed to a provided implementation of IStateEventHandler which returns updated state.
Based on System.Threading.Channels, a scheduler that coordinates the execution of synchronous and asynchronous tasks using a hierarchical key that defines their relative concurrency. For example, if tasks are dispatched sequentially with the following hierarchical keys:
then: