Ermöglicht die Erzeugung und Einreichung einzelner sowie paralleler Rechenaufgaben an Beschleuniger-Geräte.
Kontext
Die Klasse ara::shwa::TaskHandler ist als finale Klasse (final) Teil des Moduls für Hardware-Beschleunigung (shwa) innerhalb der AUTOSAR Adaptive Platform. Sie fungiert als zentrale Schnittstelle für die Übermittlung und Ausführung von Berechnungsaufgaben auf einem ausgewählten Zielgerät (Device). Innerhalb der Softwarearchitektur übernimmt die Klasse die Vermittlerrolle zwischen der anwendenden Softwarekomponente und der zugrundeliegenden Ausführungsinfrastruktur.
Die Interaktion erfolgt primär zwischen zwei Systempartnern: der aufrufenden Applikation sowie dem ausgewählten Hardware-Beschleuniger bzw. dessen Aufgabenwarteschlange. Anwendungsseitig definierte Rechenoperationen werden über die Schnittstellen von ara::shwa::TaskHandler entgegengenommen und als Queue-Einreichungen an das Device weitergeleitet [AP_SWS_SHWA_01203]. Dies ermöglicht sowohl die Abwicklung einzelner Rechenschritte als auch datenparalleler Verarbeitungsmuster [AP_SWS_SHWA_01204]. Interpretation: Die Klasse dürfte die gerätespezifischen Warteschlangen kapseln, sodass Anwendungskomponenten Beschleunigerressourcen ansteuern können, ohne an hardwarenahe Details gekoppelt zu sein. Frage (offen)
Lebenszyklus
Der Lebenszyklus einer Instanz von ara::shwa::TaskHandler wird über ein striktes Factory-Muster kontrolliert. Die Instanziierung erfolgt ausschließlich über die statische Factory-Methode Create() [AP_SWS_SHWA_01202]. Da die Klasse als final deklariert ist, ist eine Spezialisierung über Vererbung ausgeschlossen. Das erzeugte Objekt wird verpackt in einem ara::core::Result<TaskHandler> zurückgegeben, wodurch der Erfolg der Initialisierung explizit geprüft werden muss [AP_SWS_SHWA_01202].
Bezüglich der Nebenläufigkeit und Thread-Sicherheit weist die Klasse differenzierte Eigenschaften auf:
- Instanziierung: Der Aufruf der statischen Methode
Create() ist threadsicher (thread-safe) [AP_SWS_SHWA_01202]. Mehrere Threads können somit nebenläufig neue Handler-Instanzen über den Factory-Pfad erzeugen.
- Task-Einreichung: Die Methoden zur Übermittlung von Arbeitsaufträgen,
SingleTask [AP_SWS_SHWA_01203] und ParallelFor [AP_SWS_SHWA_01204], sind ausdrücklich als nicht threadsicher (not thread-safe) spezifiziert. Eine einzelne Instanz von TaskHandler darf folglich nicht unkoordiniert aus mehreren Threads zeitgleich angesprochen werden; die Synchronisation obliegt dem Aufrufer.
- Ausnahmesicherheit: Sämtliche Methoden der Schnittstelle sind als
noexcept deklariert und garantieren Ausnahmesicherheit (exception safe) [AP_SWS_SHWA_01202], [AP_SWS_SHWA_01203], [AP_SWS_SHWA_01204]. Bei Create() greifen zudem Rollback-Semantiken (rollback_semantics), falls die Initialisierung fehlschlägt [AP_SWS_SHWA_01202].
Die Besitzverhältnisse verbleiben bei der anwendenden Komponente, welche die Instanz hält und zerstört, sobald keine weiteren Queue-Einreichungen mehr benötigt werden.
Nutzungspfad
Der typische Ablauf gliedert sich in die Phasen Erzeugung, Auftragskonfiguration und Aufgabenübermittlung. Zunächst fordert die Applikation über ara::shwa::TaskHandler::Create() eine neue Instanz an [AP_SWS_SHWA_01202]. Nach erfolgreicher Validierung des ara::core::Result steht das Objekt für Arbeitsaufträge bereit.
Anschließend entscheidet die Anwendung anhand des Verarbeitungsmusters über die geeignete Übermittlungsmethode:
- Für individuelle Rechenaufgaben wird
SingleTask(cfg) aufgerufen, wodurch die als Parameter übergebene Task-Funktion in die Queue des ausgewählten Zielgeräts eingereiht wird [AP_SWS_SHWA_01203].
- Für datenparallele Verarbeitungsmuster steht das Funktionstemplate
ParallelFor(bufferSize, cfg) zur Verfügung [AP_SWS_SHWA_01204]. Hierbei wird neben der Konfiguration zusätzlich die Puffergröße (bufferSize) übergeben, um die parallele Abarbeitung über mehrere Datenelemente hinweg auf dem Beschleunigergerät zu steuern.
Interpretation: Der Template-Parameter T dürfte dabei eine aufrufbare Funktion, ein Lambda oder eine entsprechende Aufgabenkonfiguration darstellen, welche die auszuführende Berechnungslogik auf dem Device kapselt. Frage Q-2fca8604440b44e9 (offen)
Sequenzdiagramm: Interaktionskette von der Instanziierung bis zur Einreichung von Aufgaben in die Gerätewarteschlange. Quellen: [AP_SWS_SHWA_01202], [AP_SWS_SHWA_01203], [AP_SWS_SHWA_01204]
Fehlerszenarien
Die Fehlerbehandlung in ara::shwa::TaskHandler folgt dem ausnahmefreien Paradigma (noexcept) der Adaptive Platform.
Fehlerzustände treten vor allem während der Instanziierung auf:
- Die Factory-Methode
Create() meldet Misserfolge über den Fehlerkanal im Rückgabewert ara::core::Result [AP_SWS_SHWA_01202].
- Als konkreter Fehlerbezeichner ist
ShwaErrorCode::kRuntime definiert, der allgemeine Laufzeitfehler bei der Objekterzeugung signalisiert [AP_SWS_SHWA_01202]. Durch die spezifizierten Rollback-Semantiken ist sichergestellt, dass bei einem Fehlschlag keine teilinitialisierten Zustände oder Ressourcenlecks entstehen [AP_SWS_SHWA_01202].
Die Aufrufe SingleTask [AP_SWS_SHWA_01203] und ParallelFor [AP_SWS_SHWA_01204] liefern keinen Rückgabewert (void) und lösen keine Exceptions aus. Aufrufer müssen daher sicherstellen, dass die Handler-Instanz gültig ist und Zugriffe bei nebenläufigen Threads extern synchronisiert werden.
Dieser Text wurde von einer KI auf Basis der AUTOSAR-Spezifikation R25-11 generiert.
gemini-3.8-flash-medium· 2026-10-13