Ermöglicht das Warten auf den Abschluss einer asynchronen Operation ohne Rückgabewert sowie die Entnahme des Fehlerstatus.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: e943c154e07eHerkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht das Warten auf den Abschluss einer asynchronen Operation ohne Rückgabewert sowie die Entnahme des Fehlerstatus.
Die Klasse ara::core::Future<void, E> ermöglicht die asynchrone Synchronisation und Fehlerprüfung von Operationen ohne Rückgabewert in AUTOSAR Adaptive [SWS_CORE_06236]. Als nicht-kopierbarer Typ erlaubt sie das Warten auf den Abschluss sowie die ausnahmesichere Ergebnisabholung als ara::core::Result<void, E>[SWS_CORE_06236] oder die asynchrone Weiterverarbeitung per Fortsetzungsfunktion [SWS_CORE_06231]. Nach Entnahme des Ergebnisses wird der geteilte Zustand invalidiert, sodass Folgeaufrufe ohne gültigen Zustand eine Verletzung darstellen [SWS_CORE_06236].
Kontext
Die Template-Klassenspezialisierung ara::core::Future<void, E> repräsentiert das Empfängerende einer asynchronen Operation in AUTOSAR Adaptive, die bei erfolgreichem Abschluss keinen Wert zurückliefert, sondern rein den Eintritt des Ereignisses oder einen aufgetretenen Fehler signalisiert. Gemäß der Klassenbeschreibung muss die Implementierung die Bedingung E != ara::core::ErrorCode mit einem Übersetzungsfehler quittieren. Die Klasse interagiert typischerweise mit einem korrespondierenden ara::core::Promise, das den geteilten Zustand (Shared State) befüllt [SWS_CORE_06236], sowie mit asynchronen Ausführungskontexten bei der Registrierung von Fortsetzungsfunktionen [SWS_CORE_06237].
Lebenszyklus
Instanzen von ara::core::Future<void, E> sind reine Move-Semantik-Objekte: Der Kopierkonstruktor [SWS_CORE_06234] sowie der Kopierzuweisungsoperator [SWS_CORE_06235] sind gelöscht (delete). Ein über den Standardkonstruktor erzeugtes Objekt besitzt keinen geteilten Zustand und verhält sich analog zu std::future[SWS_CORE_06222]. Mittels Verschiebekonstruktion [SWS_CORE_06223] oder Verschiebezuweisung [SWS_CORE_06225] übernimmt eine Instanz den Besitz eines Shared State von einer anderen Instanz.
Der Lebenszyklus wird maßgeblich durch den Zustand des Shared State geprägt. Über die Methode valid() kann geprüft werden, ob die Instanz an einen Shared State gebunden und damit nutzbar ist [SWS_CORE_06227]. Sobald das Ergebnis mittels GetResult()[SWS_CORE_06236] oder get()[SWS_CORE_06226] abgeholt oder eine Fortsetzung über then()[SWS_CORE_06231] registriert wird, verliert das Future-Objekt seinen Shared State und valid() liefert false. Der Destruktor gibt einen verbliebenen geteilten Zustand frei [SWS_CORE_06233]. Hinsichtlich der Nebenläufigkeit sind Prüf- und Zerstörungsoperationen wie valid()[SWS_CORE_06227], is_ready()[SWS_CORE_06232] und der Destruktor [SWS_CORE_06233] threadsicher, während zustandsverändernde Operationen wie GetResult()[SWS_CORE_06236], get()[SWS_CORE_06226] und die Wartefunktionen [SWS_CORE_06228] nicht threadsicher sind.
Im synchronen Nutzungspfad wartet ein Konsument auf die Fertigstellung der asynchronen Operation. Mit is_ready() lässt sich blockadearm abfragen, ob ein Wert oder ein Fehler vorliegt [SWS_CORE_06232]. Alternativ kann mittels wait() blockierend gewartet werden [SWS_CORE_06228], oder zeitlich begrenzt über wait_for()[SWS_CORE_06229] und wait_until()[SWS_CORE_06230]. Ist das Ergebnis verfügbar, erfolgt die Wertabfrage vorzugsweise ausnahmesicher über GetResult(), wodurch ein ara::core::Result<void, E> zurückgegeben wird [SWS_CORE_06236].
Im asynchronen Pfad erlaubt die Methode then() die Registrierung einer Fortsetzungsfunktion (Continuation), die ausgeführt wird, sobald das Ergebnis vorliegt [SWS_CORE_06231]. Hierbei kann optional ein Ausführungskontext (Executor) übergeben werden [SWS_CORE_06237]. Die Continuation nimmt das Result<void, E> als Rvalue entgegen. Der Rückgabetyp von then() entpackt geschachtelte Future- oder Result-Typen automatisch (Unwrapping) [SWS_CORE_06231].
Wird eine zustandsabhängige Operation (wie GetResult(), is_ready(), wait(), wait_for(), wait_until() oder then()) auf einer ungültigen Instanz (valid() == false) aufgerufen, liegt eine Verletzung der Vorbedingung vor, die als FutureInvalidViolation behandelt wird [SWS_CORE_06228], [SWS_CORE_06229], [SWS_CORE_06230], [SWS_CORE_06231], [SWS_CORE_06232], [SWS_CORE_06236], [SWS_CORE_06237]. Bei Aufruf von get() auf einer ungültigen Instanz wird stattdessen eine FutureException mit dem Fehlercode kNoState ausgelöst [SWS_CORE_06226]; get() nimmt bei deaktivierten C++-Exceptions nicht an der Überladungsauflösung teil [SWS_CORE_06226].
Wurde das korrespondierende Promise zerstört oder hat es den geteilten Zustand verlassen, ohne ein Ergebnis oder einen expliziten Fehler zu setzen, wird der Fehlercode FutureErrc::kBrokenPromise gemäß [SWS_CORE_00400] im Shared State hinterlegt [SWS_CORE_06226], [SWS_CORE_06236]. Dieser wird von GetResult() als Fehler im Result<void, E> zurückgegeben [SWS_CORE_06236]. Wirft eine in then() registrierte Continuation eine Ausnahme, die keine Verletzung implementiert, führt dies zur FutureContinuationHasThrownViolation[SWS_CORE_06231], [SWS_CORE_06237].
Dieser Leitfaden basiert ausschließlich auf der AUTOSAR-Spezifikation für ara::core::Future<void, E> im Release R25-11.
Returns nothing. This function shall behave the same as the corresponding std::future function. Part of the behavior taken from the std::future is that after a call to this function the Future is not valid anymore (valid() == false). ≙ std::future
Get the result. Similar to Future::get(), this call blocks until the value or an error is available. However, this call will never throw an exception. Part of the behavior taken from Future::get() is that after a call to this function the Future is not valid anymore (valid() == false).
Return whether the asynchronous operation has finished. If this function returns true, get(), Get Result() and the wait calls are guaranteed not to block.
Create a new Future with the content returned by func when passed the Result of this Future. func may be called in the context of this call or in the context of Promise::set_value() or Promise::SetError() or somewhere else. valid() == false on the original future object immediately after it returns. The Callable input argument "func" takes a Result<void,E> object as parameter. This will be the Result obtained via GetResult from the Future instance itself, on which .then() is being called. The Result is passed to func as an rvalue expression. The return type of then depends on the return type of func (aka continuation). Let U be the return type of the continuation (i.e. a type equivalent to std::invoke_result_ t<std::decay_t<F>,Result<void,E>>). • If U is Future<T2,E2> for some types T2, E2, then the return type of then() is Future<T2,E2>. This is known as implicit Future unwrapping. • If U is Result<T2,E2> for some types T2, E2, then the return type of then() is Future<T2,E2>. This is known as implicit Result unwrapping. • Otherwise it is Future<U,E>. Continuations that are registered with Future::then() are registered in the Future F that Future::then() returns. No such continuation shall be executed after the destructor of the Future F returns. A continuation that is already being executed shall run to completion. Note: that means that the destructor of Future might block until the currently running continuation has been completed. The continuation shall not throw, except for the purpose of implementing a Violation. Note: Exceptions can be used within the continuation, however if they do not realize a Violation, they must not escape the continuation. Note: Users who need to propagate information from closures’ exceptions should translate them to an error and return an ara::core::Result or ara::core::Future from the continuation with the error stored in it. ≙ std::invoke_result_
Überladungenthen2
template <typename F> auto then (F &&func) noexcept -> Future< <see below> >;SWS_CORE_06231
template <typename F, typename ExecutorT> auto then (F &&func, ExecutorT &&executor) noexcept -> Future< <see below> >;SWS_CORE_06237
Wait for the given period, or until a value or an error is available. This function shall behave the same as the corresponding std::future function ≙ std::future
Wait until the given time, or until a value or an error is available. This function shall behave the same as the corresponding std::future function. ≙ std::future
Get the result. Similar to Future::get(), this call blocks until the value or an error is available. However, this call will never throw an exception. Part of the behavior taken from Future::get() is that after a call to this function the Future is not valid anymore (valid() == false).
a Result as std::move(result from the shared state) with either a value or an error that has been put into the corresponding Promise. This can be because either: • explicit setting of the Error via Promise::SetError / Promise::Set Result or • the Promise was broken, meaning the shared state was abandoned by the corresponding Promise. Then the error is kBrokenPromise as defined in [SWS_CORE_00400]
Returns nothing. This function shall behave the same as the corresponding std::future function. Part of the behavior taken from the std::future is that after a call to this function the Future is not valid anymore (valid() == false).
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 195e9e272b48Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Elementfunktion get der Spezialisierung ara::core::Future<void, E> dient dem Warten auf das Ergebnis einer asynchronen Operation ohne Rückgabewert ([SWS_CORE_06226]). Sie verhält sich wie die entsprechende Funktion von std::future und blockiert den Aufrufer, bis das Ergebnis oder ein Fehler bereitsteht ([SWS_CORE_06226], [SWS_CORE_00336]). Nach dem Aufruf verliert die Future-Instanz ihre Gültigkeit, sodass valid() == false gilt ([SWS_CORE_06226]).
Die Funktion ist nicht ausnahmesicher (not exception safe) deklariert ([SWS_CORE_06226]). Wurde im verknüpften Promise ein Fehler hinterlegt, wird eine entsprechende Ausnahme ausgelöst ([SWS_CORE_06226]). Wurde der gemeinsame Zustand vorzeitig aufgegeben, tritt der Fehlercode kBrokenPromise gemäß [SWS_CORE_00400] auf ([SWS_CORE_06226]). Wird get auf einer bereits ungültigen Instanz ausgeführt, wirft die Funktion eine FutureException mit dem Fehlercode kNoState ([SWS_CORE_06226]).
Hinsichtlich der Nebenläufigkeit ist die Methode nicht threadsicher (not thread-safe) ([SWS_CORE_06226]). Parallele Zugriffe auf dasselbe Objekt bedürfen daher einer externen Synchronisation. Des Weiteren nimmt die Funktion nicht an der Überladungsauflösung teil, wenn C++-Ausnahmen in der Compiler-Toolchain deaktiviert sind ([SWS_CORE_06226]).
Im Zusammenspiel mit verwandten Funktionen stellt [SWS_CORE_00332] (is_ready) sicher, dass get garantiert nicht blockiert, falls die Operation bereits fertiggestellt ist. Für Kontexte ohne Ausnahmen bietet AUTOSAR als Alternative [SWS_CORE_00336] (GetResult), welches Fehler über einen Ergebnis-Typ zurückmeldet, anstatt Ausnahmen zu werfen.
Dieser Text wurde von einer KI generiert und dient als Orientierungshilfe; verbindlich ist die AUTOSAR-Spezifikation.
Any exception of the type associated with the error that has been put into the corresponding Promise. This can be because either: • explicit setting of the Error via: Promise::SetError(E&&) Promise::SetError(const E&) / Promise::SetResult(const Result<T, E>&) Promise::SetResult(Result <T, E>&&) • the Promise was broken, meaning the shared state was abandoned by the corresponding Promise. Then the error is kBrokenPromise as defined in [SWS_CORE_00400]. FutureException in case the Future is invalid. The contained ErrorCode is kNoState
Hinweise: This function shall not participate in overload resolution when C++ exceptions are disabled in the compiler toolchain
Request a governed re-review of this record. The record is not changed immediately.
Return whether the asynchronous operation has finished. If this function returns true, get(), Get Result() and the wait calls are guaranteed not to block.
template <typename F> auto then (F &&func) noexcept -> Future< <see below> >;
Create a new Future with the content returned by func when passed the Result of this Future. func may be called in the context of this call or in the context of Promise::set_value() or Promise::SetError() or somewhere else. valid() == false on the original future object immediately after it returns. The Callable input argument "func" takes a Result<void,E> object as parameter. This will be the Result obtained via GetResult from the Future instance itself, on which .then() is being called. The Result is passed to func as an rvalue expression. The return type of then depends on the return type of func (aka continuation). Let U be the return type of the continuation (i.e. a type equivalent to std::invoke_result_ t<std::decay_t<F>,Result<void,E>>). • If U is Future<T2,E2> for some types T2, E2, then the return type of then() is Future<T2,E2>. This is known as implicit Future unwrapping. • If U is Result<T2,E2> for some types T2, E2, then the return type of then() is Future<T2,E2>. This is known as implicit Result unwrapping. • Otherwise it is Future<U,E>. Continuations that are registered with Future::then() are registered in the Future F that Future::then() returns. No such continuation shall be executed after the destructor of the Future F returns. A continuation that is already being executed shall run to completion. Note: that means that the destructor of Future might block until the currently running continuation has been completed. The continuation shall not throw, except for the purpose of implementing a Violation. Note: Exceptions can be used within the continuation, however if they do not realize a Violation, they must not escape the continuation. Note: Users who need to propagate information from closures’ exceptions should translate them to an error and return an ara::core::Result or ara::core::Future from the continuation with the error stored in it.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 161f9bad96abHerkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die Methode then registriert eine Folgeoperation (Continuation func) an einer ara::core::Future<void, E>-Instanz [SWS_CORE_06231]. Das aufrufbare Objekt nimmt das Ergebnis der Operation als Rvalue-Ausdruck vom Typ Result<void, E> entgegen, welches intern über GetResult bereitgestellt wird [SWS_CORE_06231]. Der Aufruf von func kann synchron im Kontext von then oder asynchron im Kontext von Promise::set_value(), Promise::SetError() beziehungsweise an anderer Stelle erfolgen [SWS_CORE_06231].
Unmittelbar nach Rückkehr von then ist das ursprüngliche Future ungültig (valid() == false) [SWS_CORE_06231]. Der Rückgabetyp passt sich dem Rückgabetyp U der Continuation an:
Gibt func ein Future<T2, E2> zurück, erfolgt ein implizites Entpacken und then gibt Future<T2, E2> zurück [SWS_CORE_06231].
Gibt func ein Result<T2, E2> zurück, wird dieses ebenfalls implizit zu Future<T2, E2> entpackt [SWS_CORE_06231].
In allen anderen Fällen ist der Rückgabetyp Future<U, E>[SWS_CORE_06231].
Fehlerbehandlung und Randbedingungen
Standardisierte Fehlercodes sind für diese Funktion nicht spezifiziert [SWS_CORE_06231]. Die Methode ist als noexcept deklariert, definiert jedoch zwei Verletzungen (Violations):
FutureInvalidViolation: Tritt auf, wenn die Methode auf einem ungültigen Future aufgerufen wird (falls valid()false zurückgibt) [SWS_CORE_06231].
FutureContinuationHasThrownViolation: Tritt auf, wenn die Continuation eine Ausnahme wirft, die keine Violation implementiert [SWS_CORE_06231]. Fehler in der Continuation müssen stattdessen in ein Result oder Future verpackt zurückgegeben werden [SWS_CORE_06231].
Nebenläufigkeit und Zusammenspiel
Die Methode ist nicht threadsicher (not thread-safe) [SWS_CORE_06231]. Nach Rückkehr des Destruktors des zurückgegebenen Futures wird keine registrierte Continuation mehr ausgeführt; eine bereits laufende Ausführung wird jedoch zu Ende geführt, sodass der Destruktor blockieren kann [SWS_CORE_06231]. Während [SWS_CORE_06231] für Future<void, E> gilt, beschreibt [SWS_CORE_00331] die Variante für typisierte Futures Future<T, E> und [SWS_CORE_06237] die Überladung mit explizitem Executor.
Dieser Text wurde von einer KI auf Basis der AUTOSAR-Spezifikation generiert.
FutureInvalidVio- If the Future is invalid (valid returns false) lation FutureContinua- If the continuation throws an exception tionHasThrownVio- lation
template <typename F, typename ExecutorT> auto then (F &&func, ExecutorT &&executor) noexcept -> Future< <see below> >;
Create a new Future with the content returned by func when passed the Result of this Future. func is called in the context of the provided execution context executor. valid() == false on the original future object immediately after it returns. The Callable input argument "func" takes a Result<void,E> object as parameter. This will be the Result obtained via GetResult from the Future instance itself, on which .then() is being called. The Result is passed to func as an rvalue expression. The return type of then depends on the return type of func (aka continuation). Let U be the return type of the continuation (i.e. a type equivalent to std::invoke_result_ t<std::decay_t<F>,Result<void,E>>). • If U is Future<T2,E2> for some types T2, E2, then the return type of then() is Future<T2,E2>. This is known as implicit Future unwrapping. • If U is Result<T2,E2> for some types T2, E2, then the return type of then() is Future<T2,E2>. This is known as implicit Result unwrapping. • Otherwise it is Future<U,E>. Continuations that are registered with Future::then() are registered in the Future F that Future::then() returns. No such continuation shall be executed after the destructor of the Future F returns. A continuation that is already being executed shall run to completion. Note: that means that the destructor of Future might block until the currently running continuation has been completed. The continuation shall not throw, except for the purpose of implementing a Violation. Note: Exceptions can be used within the continuation, however if they do not realize a Violation, they must not escape the continuation. Note: Users who need to propagate information from closures’ exceptions should translate them to an error and return an ara::core::Result or ara::core::Future from the continuation with the error stored in it.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 96d3b0e93b60Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Funktion then registriert ein aufrufbares Fortsetzungsobjekt (Continuation) func an einer Instanz von ara::core::Future<void, E> zur Ausführung im angegebenen Ausführungskontext executor[SWS_CORE_06237]. Unmittelbar nach der Rückgabe von then verliert die aufrufende Future-Instanz ihre Gültigkeit, sodass valid() == false ist [SWS_CORE_06237]. Die Fortsetzung erhält das Ergebnis der ursprünglichen Future-Instanz als Result<void, E> in Form eines Rvalue-Ausdrucks übergeben [SWS_CORE_06237]. Als Rückgabewert liefert der Aufruf eine neue Future-Instanz, wobei Rückgabetypen der Fortsetzung vom Typ Future<T2, E2> oder Result<T2, E2> implizit zu Future<T2, E2> entpackt werden; andernfalls wird ein Future<U, E> zurückgegeben [SWS_CORE_06237].
In Bezug auf Nebenläufigkeit und Lebenszyklus ist die Funktion als nicht threadsicher (not thread-safe) spezifiziert [SWS_CORE_06237]. Die Fortsetzung wird in dem neu zurückgegebenen Future registriert. Nach Rückkehr des Destruktors dieses neuen Futures darf keine Fortsetzung mehr ausgeführt werden; eine bereits in Ausführung befindliche Fortsetzung läuft jedoch vollständig zu Ende, weshalb der Destruktor des Futures blockieren kann [SWS_CORE_06237].
Die Funktion deklariert keine standardisierten Fehlercodes und ist als noexcept definiert [SWS_CORE_06237]. Wird sie auf einer ungültigen Future-Instanz aufgerufen, liegt die Verletzung FutureInvalidViolation vor [SWS_CORE_06237]. Sofern die Fortsetzung eine Exception wirft, führt dies zur Verletzung FutureContinuationHasThrownViolation[SWS_CORE_06237]. Exceptions dürfen die Fortsetzung nicht verlassen, sondern müssen bei Bedarf in Fehlerwerte übersetzt und innerhalb eines Result oder Future zurückgegeben werden [SWS_CORE_06237]. Die Funktion ergänzt die executorlose Variante [SWS_CORE_06231] und bildet das Gegenstück zu den wertbehafteten Überladungen [SWS_CORE_00331] sowie [SWS_CORE_00337].
Dieser Nutzungshinweis wurde von einer KI erstellt und basiert auf der AUTOSAR-Spezifikation R25-11.
FutureInvalidVio- If the Future is invalid (valid returns false) lation FutureContinua- If the continuation throws an exception. tionHasThrownVio- lation
Template-Parameter
Parameter
Beschreibung
FExecutorT
the type of the func argument the type of the executor argument
Parameter (in)
Parameter
Beschreibung
func
a callable to register
executor
the execution context in which to execute the Callable func
Checks if the Future is valid, i.e. if it has a shared state.
This function shall behave the same as the corresponding std::future function.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 480112e5c811Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Funktion valid() prüft synchron, ob die Instanz von ara::core::Future<void, E> einen gemeinsamen Zustand (Shared State) besitzt und damit verwendbar ist [SWS_CORE_06227]. Sie verhält sich gemäß Spezifikation analog zur entsprechenden Funktion aus std::future[SWS_CORE_06227]. Als Rückgabewert liefert sie true, wenn das Future nutzbar ist, und false, wenn es nicht nutzbar ist [SWS_CORE_06227].
Hinsichtlich der Nebenläufigkeit und Fehlerbehandlung ist die Methode als noexcept deklariert, ausnahmesicher (exception safe) und ausdrücklich als thread-sicher (thread-safe) spezifiziert [SWS_CORE_06227]. Sie kann somit sicher aus nebenläufigen Kontexten aufgerufen werden.
Im Zusammenspiel mit anderen Operationen dient valid() zur Absicherung des Lebenszyklus:
Wird auf einem ungültigen Future-Objekt (valid() == false) eine Operation wie wait()[SWS_CORE_06228] oder is_ready()[SWS_CORE_00332] aufgerufen, löst dies die Verletzung FutureInvalidViolation aus.
Konsumierende Operationen invalidieren das Objekt: Nach einem Aufruf von get() ist das Future nicht mehr gültig, sodass nachfolgende Prüfungen mit valid() den Wert false ergeben [SWS_CORE_06226].
Ebenso führen Weiterleitungen über then()[SWS_CORE_00331] oder Aufrufe von GetResult()[SWS_CORE_00336] dazu, dass das ursprüngliche Future-Objekt unmittelbar invalidiert wird.
Dieser Nutzungshinweis wurde von einer KI auf Basis der Spezifikation generiert.
Wait for a value or an error to be available. This function shall behave the same as the corresponding std::future function
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 2f9ee5ecd1d4HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Elementfunktion wait der Spezialisierung ara::core::Future<void, E> blockiert den aufrufenden Thread synchron, bis das Ergebnis der asynchronen Operation in Form eines Werts oder eines Fehlers verfügbar ist [SWS_CORE_06228]. Die Funktion nimmt keine Parameter entgegen, liefert keinen Rückgabewert (void) und verhält sich spezifikationsgemäß wie die entsprechende Funktion von std::future[SWS_CORE_06228].
Hinsichtlich Fehlerbehandlung und Randbedingungen gelten folgende Vorgaben:
Ausnahmesicherheit und Fehlerbehandlung: Die Operation ist mit noexcept deklariert und als ausnahmesicher (exception safe) spezifiziert [SWS_CORE_06228]. Liefert valid() für die Future-Instanz false, liegt die Verletzung FutureInvalidViolation vor [SWS_CORE_06228]. Die konkrete Folge dieser Verletzung dürfte als systemspezifische Fehlerbehandlung der AUTOSAR-Laufzeitumgebung realisiert sein. Frage Q-469e9abc947b9869 (offen)
Nebenläufigkeit: Die Funktion ist als nicht threadsicher (not thread-safe) eingestuft [SWS_CORE_06228]. Ein nebenläufiger Zugriff auf dasselbe Future-Objekt ohne externe Synchronisation ist daher unzulässig.
Im Zusammenspiel mit den weiteren Funktionen des Moduls core bestehen folgende Möglichkeiten:
Mit der threadsicheren Methode is_ready kann vorab abgefragt werden, ob die Operation abgeschlossen ist; bei Rückgabe von true blockiert wait garantiert nicht mehr [SWS_CORE_06232].
Zur Vermeidung endlosen Blockierens stehen die zeitbegrenzten Funktionen wait_for mit einer relativen Dauer [SWS_CORE_06229] sowie wait_until mit einem absoluten Zeitpunkt [SWS_CORE_06230] bereit.
Für die primäre Template-Klasse ara::core::Future gelten die gleichen synchronen Wartevorgaben und Einschränkungen [SWS_CORE_00328].
Dieser Text wurde durch ein KI-System kuratiert und stützt sich ausschließlich auf die AUTOSAR-Spezifikation.
Wait for the given period, or until a value or an error is available. This function shall behave the same as the corresponding std::future function
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 927a98d78cf3HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Methode wait_for der Spezialisierung ara::core::Future<void, E> blockiert den aufrufenden Thread synchron für eine maximale Zeitspanne timeoutDuration oder bis das Ergebnis bereitsteht [SWS_CORE_06229]. Sie verhält sich semantisch wie die korrespondierende Standardfunktion std::future::wait_for[SWS_CORE_06229].
Als Rückgabewert liefert die Funktion den Status FutureStatus[SWS_CORE_06229]. Dieser signalisiert mit FutureStatus::kReady, dass ein Wert oder ein Fehler verfügbar ist, beziehungsweise mit FutureStatus::kTimeout, dass die Frist ohne Ergebnis abgelaufen ist [SWS_CORE_00361]. Ein zu std::future_status::deferred äquivalenter Zustand ist nicht vorgesehen [SWS_CORE_00361]. Das Verhalten entspricht der allgemeinen Future-Schnittstelle [SWS_CORE_00329].
Für den Aufruf gelten folgende Bedingungen bezüglich Nebenläufigkeit und Fehlerbehandlung:
Nebenläufigkeit: Die Funktion ist als nicht threadsicher (not thread-safe) spezifiziert [SWS_CORE_06229]. Gleichzeitige Aufrufe auf derselben Instanz müssen aufruferseitig abgesichert werden.
Fehlerfälle und Ausnahmesicherheit: Die Operation ist als ausnahmesicher (exception safe) sowie noexcept deklariert [SWS_CORE_06229]. Ist das Future-Objekt ungültig (valid() liefert false), liegt eine FutureInvalidViolation vor [SWS_CORE_06229]. Wegen der noexcept-Deklaration dürfte diese Verletzung vermutlich zum sofortigen Programmabbruch führen. Frage Q-4f01aa6e7fbfb12d (offen)
Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation von AUTOSAR Adaptive R25-11 erstellt.
Wait until the given time, or until a value or an error is available. This function shall behave the same as the corresponding std::future function.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 932b0d674f17Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Elementfunktion wait_until der Spezialisierung ara::core::Future<void, E> blockiert den aufrufenden Thread, bis der angegebene absolute Zeitpunkt deadline erreicht ist oder ein Wert beziehungsweise ein Fehler zur Verfügung steht [SWS_CORE_06230]. Die Funktion zeigt dasselbe Verhalten wie die korrespondierende C++-Standardfunktion std::future::wait_until[SWS_CORE_06230] und besitzt die gleiche Semantik wie die generische Überladung für ara::core::Future[SWS_CORE_00330].
Der Rückgabewert vom Typ FutureStatus signalisiert, ob die Frist erreicht wurde oder ein Wert verfügbar ist [SWS_CORE_06230]. Hierbei zeigt der Zustand kReady an, dass der geteilte Status bereit ist, während kTimeout bedeutet, dass der geteilte Status vor Ablauf der Frist nicht bereit wurde [SWS_CORE_00361]. Ein Zustand analog zu std::future_status::deferred existiert in FutureStatus nicht [SWS_CORE_00361].
Hinsichtlich Ausführung und Randbedingungen sind folgende Vorgaben definiert:
Aufrufkontext und Ausnahmeverhalten: Die Funktion ist über die Header-Datei #include "ara/core/future.h" verfügbar, als noexcept deklariert und als ausnahmesicher (exception safe) spezifiziert [SWS_CORE_06230].
Fehlerzustände: Ist das Future ungültig, wenn also valid() den Wert false zurückgibt, liegt die Verletzung FutureInvalidViolation vor [SWS_CORE_06230].
Nebenläufigkeit: Die Operation ist als nicht threadsicher (not thread-safe) eingestuft [SWS_CORE_06230].
Dieser Verwendungshinweis wurde automatisiert auf Basis der Spezifikation von AUTOSAR Adaptive R25-11 generiert.
gemini-3.8-flash-medium· 2026-10-13