Concurrency

UML supports specification of the concurrency at the class level; standard UML distuinguishes between sequential and active classes:

When you specify sequential or active concurrency, you actually specify if the class should run in its own OS task or not. In non-AUTOSAR RXF implementations, the RXF uses a message queue per OS task to send a UML event to an active class. An AUTOSAR OS does not support a message queue: the ARXF-CP uses its own event queue per task.

Sequential Classes

All sequential classes run in the so-called swc task. This is a task which is used by the structured class used for an AUTOSAR SWC. If you add a class, by default it will be a sequential class. Any event which must be handled by this class is placed in a FIFO queue when sent. This single queue is used by all sequential classes.

Active Classes

An active class is a class which has its dedicated OS task assigned. A task for an active class has its own UML event queue.

Each active class uses a runnable which serves as UML event dispatcher, which can be triggered by the RTE when an event is placed into its event queue.

When the concurrency of a class is set to active, you must add this event dispatcher runnable to the SW-C where it belongs to. This runnable must have a eventDispatcherActiveClass stereotyped dependency to the active class which event queue it handles. See Profiles.