Permet d'attendre l'achèvement d'une opération asynchrone sans valeur de retour ainsi que de récupérer l'état d'erreur.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : e943c154e07eProvenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Permet d'attendre l'achèvement d'une opération asynchrone sans valeur de retour ainsi que de récupérer l'état d'erreur.
La classe ara::core::Future<void, E> permet la synchronisation asynchrone et la vérification des erreurs d'opérations sans valeur de retour dans AUTOSAR Adaptive [SWS_CORE_06236]. En tant que type non copiable, elle permet d'attendre l'achèvement ainsi que de récupérer le résultat sans exception sous la forme ara::core::Result<void, E>[SWS_CORE_06236] ou de poursuivre le traitement asynchrone par une fonction de continuation [SWS_CORE_06231]. Après la récupération du résultat, l'état partagé est invalidé, de sorte que les appels ultérieurs sans état valide constituent une violation [SWS_CORE_06236].
Contexte
La spécialisation de classe template ara::core::Future<void, E> représente l'extrémité réceptrice d'une opération asynchrone dans AUTOSAR Adaptive qui, en cas d'achèvement réussi, ne renvoie aucune valeur mais signale uniquement la survenue de l'événement ou une erreur survenue. Selon la description de la classe, l'implémentation doit rejeter la condition E != ara::core::ErrorCode avec une erreur de compilation. La classe interagit typiquement avec un ara::core::Promise correspondant, qui remplit l'état partagé (shared state) [SWS_CORE_06236], ainsi qu'avec des contextes d'exécution asynchrones lors de l'enregistrement de fonctions de continuation [SWS_CORE_06237].
Cycle de vie
Les instances de ara::core::Future<void, E> sont des objets purement sémantiques de déplacement : le constructeur de copie [SWS_CORE_06234] ainsi que l'opérateur d'assignation par copie [SWS_CORE_06235] sont supprimés (delete). Un objet créé via le constructeur par défaut ne possède aucun état partagé et se comporte de manière analogue à std::future[SWS_CORE_06222]. Au moyen de la construction par déplacement [SWS_CORE_06223] ou de l'assignation par déplacement [SWS_CORE_06225], une instance prend possession d'un shared state provenant d'une autre instance.
Le cycle de vie est fortement déterminé par l'état du shared state. La méthode valid() permet de vérifier si l'instance est liée à un shared state et est donc utilisable [SWS_CORE_06227]. Dès que le résultat est récupéré au moyen de GetResult()[SWS_CORE_06236] ou get()[SWS_CORE_06226], ou qu'une continuation est enregistrée via then()[SWS_CORE_06231], l'objet Future perd son shared state et valid() renvoie false. Le destructeur libère un état partagé résiduel [SWS_CORE_06233]. En matière de concurrence, les opérations de vérification et de destruction telles que valid()[SWS_CORE_06227], is_ready()[SWS_CORE_06232] et le destructeur [SWS_CORE_06233] sont sûres pour les threads (thread-safe), tandis que les opérations modifiant l'état telles que GetResult()[SWS_CORE_06236], get()[SWS_CORE_06226] et les fonctions d'attente [SWS_CORE_06228] ne sont pas sûres pour les threads.
Dans le chemin d'utilisation synchrone, un consommateur attend la fin de l'opération asynchrone. is_ready() permet de vérifier avec peu de blocage si une valeur ou une erreur est présente [SWS_CORE_06232]. Alternativement, il est possible d'attendre de manière bloquante au moyen de wait()[SWS_CORE_06228], ou pendant une durée limitée via wait_for()[SWS_CORE_06229] et wait_until()[SWS_CORE_06230]. Dès que le résultat est disponible, la récupération de la valeur s'effectue de préférence sans exception via GetResult(), renvoyant ainsi un ara::core::Result<void, E>[SWS_CORE_06236].
Dans le chemin asynchrone, la méthode then() permet l'enregistrement d'une fonction de continuation (continuation) qui est exécutée dès que le résultat est disponible [SWS_CORE_06231]. À cet égard, un contexte d'exécution (executor) peut optionnellement être transmis [SWS_CORE_06237]. La continuation reçoit le Result<void, E> en tant que rvalue. Le type de retour de then() déballe automatiquement les types Future ou Result imbriqués (unwrapping) [SWS_CORE_06231].
Si une opération dépendante de l'état (telle que GetResult(), is_ready(), wait(), wait_for(), wait_until() ou then()) est appelée sur une instance invalide (valid() == false), il s'agit d'une violation de précondition traitée comme FutureInvalidViolation[SWS_CORE_06228], [SWS_CORE_06229], [SWS_CORE_06230], [SWS_CORE_06231], [SWS_CORE_06232], [SWS_CORE_06236], [SWS_CORE_06237]. En cas d'appel de get() sur une instance invalide, une FutureException avec le code d'erreur kNoState est levée à la place [SWS_CORE_06226] ; lorsque les exceptions C++ sont désactivées, get() ne participe pas à la résolution de surcharge [SWS_CORE_06226].
Si la Promise correspondante a été détruite ou a quitté l'état partagé sans définir de résultat ou d'erreur explicite, le code d'erreur FutureErrc::kBrokenPromise est consigné dans le shared state conformément à [SWS_CORE_00400][SWS_CORE_06226], [SWS_CORE_06236]. Celui-ci est renvoyé par GetResult() en tant qu'erreur dans le Result<void, E>[SWS_CORE_06236]. Si une continuation enregistrée dans then() lève une exception qui n'implémente pas une violation, cela conduit à FutureContinuationHasThrownViolation[SWS_CORE_06231], [SWS_CORE_06237].
Ce guide est basé exclusivement sur la spécification AUTOSAR pour ara::core::Future<void, E> dans la 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_
Surchargesthen2
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).
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 195e9e272b48Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction membre get de la spécialisation ara::core::Future<void, E> sert à attendre le résultat d'une opération asynchrone sans valeur de retour ([SWS_CORE_06226]). Elle se comporte comme la fonction correspondante de std::future et bloque l'appelant jusqu'à ce que le résultat ou une erreur soit disponible ([SWS_CORE_06226], [SWS_CORE_00336]). Après l'appel, l'instance de future perd sa validité, de sorte que valid() == false s'applique ([SWS_CORE_06226]).
La fonction est déclarée non sûre vis-à-vis des exceptions (not exception safe) ([SWS_CORE_06226]). Si une erreur a été consignée dans le Promise associé, une exception correspondante est déclenchée ([SWS_CORE_06226]). Si l'état partagé a été abandonné prématurément, le code d'erreur kBrokenPromise selon [SWS_CORE_00400] survient ([SWS_CORE_06226]). Si get est exécutée sur une instance déjà invalide, la fonction lève une FutureException avec le code d'erreur kNoState ([SWS_CORE_06226]).
En matière de concurrence, la méthode n'est pas thread-safe (not thread-safe) ([SWS_CORE_06226]). Les accès parallèles au même objet nécessitent donc une synchronisation externe. De plus, la fonction ne participe pas à la résolution de surcharge lorsque les exceptions C++ sont désactivées dans la chaîne d'outils du compilateur ([SWS_CORE_06226]).
En interaction avec des fonctions apparentées, [SWS_CORE_00332] (is_ready) garantit que get ne bloque pas si l'opération est déjà terminée. Pour les contextes sans exceptions, AUTOSAR propose comme alternative [SWS_CORE_00336] (GetResult), qui signale les erreurs via un type de résultat au lieu de lever des exceptions.
Ce texte a été généré par une IA et sert de guide d'orientation ; seule la spécification AUTOSAR fait foi.
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.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 161f9bad96abProvenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La méthode then enregistre une opération consécutive (continuation func) sur une instance de ara::core::Future<void, E>[SWS_CORE_06231]. L'objet appelable reçoit le résultat de l'opération sous la forme d'une expression rvalue de type Result<void, E>, fournie en interne via GetResult[SWS_CORE_06231]. L'appel de func peut s'effectuer de manière synchrone dans le contexte de then ou de manière asynchrone dans le contexte de Promise::set_value(), de Promise::SetError() ou ailleurs [SWS_CORE_06231].
Immédiatement après le retour de then, le future d'origine est invalide (valid() == false) [SWS_CORE_06231]. Le type de retour s'adapte au type de retour U de la continuation :
Si func renvoie un Future<T2, E2>, un déballage implicite a lieu et then renvoie Future<T2, E2>[SWS_CORE_06231].
Si func renvoie un Result<T2, E2>, celui-ci est également déballé implicitement en Future<T2, E2>[SWS_CORE_06231].
Dans tous les autres cas, le type de retour est Future<U, E>[SWS_CORE_06231].
Gestion des erreurs et conditions limites
Aucun code d'erreur standardisé n'est spécifié pour cette fonction [SWS_CORE_06231]. La méthode est déclarée comme noexcept, mais définit deux violations (violations) :
FutureInvalidViolation : survient lorsque la méthode est appelée sur un future invalide (si valid() renvoie false) [SWS_CORE_06231].
FutureContinuationHasThrownViolation : survient lorsque la continuation lève une exception qui n'implémente pas une violation [SWS_CORE_06231]. Les erreurs dans la continuation doivent être renvoyées à la place encapsulées dans un Result ou un Future[SWS_CORE_06231].
Concurrence et interaction
La méthode n'est pas thread-safe (not thread-safe) [SWS_CORE_06231]. Après le retour du destructeur du future renvoyé, plus aucune continuation enregistrée n'est exécutée ; toutefois, une exécution déjà en cours est menée à son terme, de sorte que le destructeur peut bloquer [SWS_CORE_06231]. Tandis que [SWS_CORE_06231] s'applique à Future<void, E>, [SWS_CORE_00331] décrit la variante pour les futures typés Future<T, E> et [SWS_CORE_06237] la surcharge avec un exécuteur explicite.
Ce texte a été généré par une IA sur la base de la spécification AUTOSAR.
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.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 96d3b0e93b60Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction then enregistre un objet de continuation appelable func sur une instance de ara::core::Future<void, E> pour exécution dans le contexte d'exécution spécifié executor[SWS_CORE_06237]. Immédiatement après le retour de then, l'instance de future appelante perd sa validité, de sorte que valid() == false est vérifié [SWS_CORE_06237]. La continuation reçoit le résultat de l'instance de future d'origine passé comme Result<void, E> sous forme d'une expression rvalue [SWS_CORE_06237]. Comme valeur de retour, l'appel fournit une nouvelle instance de Future, les types de retour de la continuation de type Future<T2, E2> ou Result<T2, E2> étant implicitement déballés en Future<T2, E2> ; sinon, un Future<U, E> est retourné [SWS_CORE_06237].
En matière de concurrence et de cycle de vie, la fonction est spécifiée comme n'étant pas thread-safe (not thread-safe) [SWS_CORE_06237]. La continuation est enregistrée dans le nouveau future retourné. Après le retour du destructeur de ce nouveau future, aucune continuation ne doit plus être exécutée ; une continuation déjà en cours d'exécution s'exécute toutefois complètement jusqu'à son terme, raison pour laquelle le destructeur du future peut bloquer [SWS_CORE_06237].
La fonction ne déclare aucun code d'erreur standardisé et est définie comme noexcept[SWS_CORE_06237]. Si elle est appelée sur une instance de future non valide, la violation FutureInvalidViolation se produit [SWS_CORE_06237]. Dans la mesure où la continuation lève une exception, cela conduit à la violation FutureContinuationHasThrownViolation[SWS_CORE_06237]. Les exceptions ne doivent pas quitter la continuation, mais doivent être traduites au besoin en valeurs d'erreur et retournées à l'intérieur d'un Result ou Future[SWS_CORE_06237]. La fonction complète la variante sans exécuteur [SWS_CORE_06231] et constitue le pendant des surcharges avec valeur [SWS_CORE_00331] ainsi que [SWS_CORE_00337].
Cette note d'utilisation a été créée par une IA et est basée sur la spécification AUTOSAR 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.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 480112e5c811Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction valid() vérifie de manière synchrone si l'instance de ara::core::Future<void, E> possède un état partagé (Shared State) et est ainsi utilisable [SWS_CORE_06227]. Conformément à la spécification, elle se comporte de manière analogue à la fonction correspondante de std::future[SWS_CORE_06227]. Comme valeur de retour, elle fournit true si le future est utilisable, et false s'il n'est pas utilisable [SWS_CORE_06227].
En ce qui concerne la concurrence et le traitement des erreurs, la méthode est déclarée comme noexcept, sûre vis-à-vis des exceptions (exception safe) et expressément spécifiée comme thread-safe [SWS_CORE_06227]. Elle peut ainsi être appelée en toute sécurité depuis des contextes concurrents.
En interaction avec d'autres opérations, valid() sert à sécuriser le cycle de vie :
Si une opération telle que wait()[SWS_CORE_06228] ou is_ready()[SWS_CORE_00332] est appelée sur un objet future non valide (valid() == false), cela déclenche la violation FutureInvalidViolation.
Les opérations de consommation invalident l'objet : après un appel de get(), le future n'est plus valide, de sorte que les vérifications ultérieures avec valid() donnent la valeur false[SWS_CORE_06226].
De même, les transmissions via then()[SWS_CORE_00331] ou les appels de GetResult()[SWS_CORE_00336] entraînent l'invalidation immédiate de l'objet future d'origine.
Cette note d'utilisation a été générée par une IA sur la base de la spécification.
Wait for a value or an error to be available. This function shall behave the same as the corresponding std::future function
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 2f9ee5ecd1d4ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction membre wait de la spécialisation ara::core::Future<void, E> bloque le thread appelant de manière synchrone jusqu'à ce que le résultat de l'opération asynchrone soit disponible sous la forme d'une valeur ou d'une erreur [SWS_CORE_06228]. La fonction ne prend aucun paramètre, ne renvoie aucune valeur de retour (void) et se comporte conformément à la spécification comme la fonction correspondante de std::future[SWS_CORE_06228].
Concernant le traitement des erreurs et les conditions aux limites, les exigences suivantes s'appliquent :
Sécurité vis-à-vis des exceptions et traitement des erreurs : L'opération est déclarée avec noexcept et spécifiée comme sûre vis-à-vis des exceptions (exception safe) [SWS_CORE_06228]. Si valid() renvoie false pour l'instance de future, la violation FutureInvalidViolation est présente [SWS_CORE_06228]. La conséquence concrète de cette violation devrait être mise en œuvre sous forme d'un traitement d'erreurs spécifique au système de l'environnement d'exécution AUTOSAR. Question Q-469e9abc947b9869 (ouverte)
Concurrence : La fonction est classée comme non thread-safe (not thread-safe) [SWS_CORE_06228]. Un accès concurrent au même objet future sans synchronisation externe est donc inadmissible.
En interaction avec les autres fonctions du module core, les possibilités suivantes existent :
La méthode thread-safe is_ready permet de vérifier au préalable si l'opération est terminée ; en cas de retour de true, wait est garanti de ne plus bloquer [SWS_CORE_06232].
Pour éviter un blocage infini, les fonctions limitées dans le temps wait_for avec une durée relative [SWS_CORE_06229] ainsi que wait_until avec un instant absolu [SWS_CORE_06230] sont disponibles.
Pour la classe de modèle primaire ara::core::Future, les mêmes exigences d'attente synchrone et restrictions s'appliquent [SWS_CORE_00328].
Ce texte a été organisé par un système d'IA et repose exclusivement sur la spécification AUTOSAR.
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
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 927a98d78cf3ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode wait_for de la spécialisation ara::core::Future<void, E> bloque le thread appelant de manière synchrone pendant un laps de temps maximal timeoutDuration ou jusqu'à ce que le résultat soit disponible [SWS_CORE_06229]. Elle se comporte sémantiquement comme la fonction standard correspondante std::future::wait_for[SWS_CORE_06229].
Comme valeur de retour, la fonction fournit l'état FutureStatus[SWS_CORE_06229]. Celui-ci signale avec FutureStatus::kReady qu'une valeur ou une erreur est disponible, ou avec FutureStatus::kTimeout que l'échéance a expiré sans résultat [SWS_CORE_00361]. Un état équivalent à std::future_status::deferred n'est pas prévu [SWS_CORE_00361]. Le comportement correspond à l'interface générale de future [SWS_CORE_00329].
Pour l'appel, les conditions suivantes s'appliquent en matière de concurrence et de traitement des erreurs :
Concurrence : la fonction est spécifiée comme n'étant pas thread-safe (not thread-safe) [SWS_CORE_06229]. Les appels simultanés sur la même instance doivent être sécurisés du côté de l'appelant.
Cas d'erreur et sécurité vis-à-vis des exceptions : l'opération est déclarée comme sûre vis-à-vis des exceptions (exception safe) ainsi que noexcept[SWS_CORE_06229]. Si l'objet Future n'est pas valide (valid() fournit false), il y a une FutureInvalidViolation[SWS_CORE_06229]. En raison de la déclaration noexcept, cette violation devrait probablement conduire à un arrêt immédiat du programme. Question Q-4f01aa6e7fbfb12d (ouverte)
Cette note d'utilisation a été générée de manière automatisée sur la base de la spécification d'AUTOSAR Adaptive R25-11.
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.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 932b0d674f17Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction membre wait_until de la spécialisation ara::core::Future<void, E> bloque le thread appelant jusqu'à ce que l'instant absolu spécifié deadline soit atteint ou qu'une valeur ou une erreur soit disponible [SWS_CORE_06230]. La fonction présente le même comportement que la fonction standard C++ correspondante std::future::wait_until[SWS_CORE_06230] et possède la même sémantique que la surcharge générique pour ara::core::Future[SWS_CORE_00330].
La valeur de retour de type FutureStatus signale si l'échéance a été atteinte ou si une valeur est disponible [SWS_CORE_06230]. Ici, l'état kReady indique que l'état partagé est prêt, tandis que kTimeout signifie que l'état partagé n'est pas devenu prêt avant l'expiration de l'échéance [SWS_CORE_00361]. Un état analogue à std::future_status::deferred n'existe pas dans FutureStatus[SWS_CORE_00361].
Concernant l'exécution et les conditions aux limites, les exigences suivantes sont définies :
Contexte d'appel et comportement vis-à-vis des exceptions : la fonction est disponible via le fichier d'en-tête #include "ara/core/future.h", déclarée comme noexcept et spécifiée comme sûre vis-à-vis des exceptions (exception safe) [SWS_CORE_06230].
États d'erreur : si le future n'est pas valide, c'est-à-dire si valid() renvoie la valeur false, la violation FutureInvalidViolation est présente [SWS_CORE_06230].
Concurrence : l'opération est classée comme n'étant pas thread-safe (not thread-safe) [SWS_CORE_06230].
Cette note d'utilisation a été générée automatiquement sur la base de la spécification d'AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original allemand