Позволяет ожидать завершения асинхронной операции без возвращаемого значения, а также извлекать статус ошибки.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e943c154e07eПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет ожидать завершения асинхронной операции без возвращаемого значения, а также извлекать статус ошибки.
Класс ara::core::Future<void, E> обеспечивает асинхронную синхронизацию и проверку ошибок для операций без возвращаемого значения в AUTOSAR Adaptive [SWS_CORE_06236]. Будучи некопируемым типом, он позволяет ожидать завершения, а также безопасно с точки зрения исключений получать результат в виде ara::core::Result<void, E>[SWS_CORE_06236] или выполнять асинхронную дальнейшую обработку с помощью функции продолжения [SWS_CORE_06231]. После извлечения результата разделяемое состояние инвалидируется, поэтому последующие вызовы без действительного состояния представляют собой нарушение [SWS_CORE_06236].
Контекст
Специализация шаблонного класса ara::core::Future<void, E> представляет собой принимающую сторону асинхронной операции в AUTOSAR Adaptive, которая при успешном завершении не возвращает значение, а лишь сигнализирует о наступлении события или возникшей ошибке. Согласно описанию класса, реализация должна завершать условие E != ara::core::ErrorCode ошибкой компиляции. Класс обычно взаимодействует с соответствующим ara::core::Promise, заполняющим разделяемое состояние (shared state) [SWS_CORE_06236], а также с асинхронными контекстами выполнения при регистрации функций продолжения [SWS_CORE_06237].
Жизненный цикл
Экземпляры ara::core::Future<void, E> являются объектами исключительно с семантикой перемещения: конструктор копирования [SWS_CORE_06234] и оператор присваивания с копированием [SWS_CORE_06235] удалены (delete). Объект, созданный через конструктор по умолчанию, не имеет разделяемого состояния и ведет себя аналогично std::future[SWS_CORE_06222]. С помощью конструктора перемещения [SWS_CORE_06223] или оператора присваивания с перемещением [SWS_CORE_06225] экземпляр принимает владение shared state от другого экземпляра.
Жизненный цикл в значительной степени определяется состоянием shared state. С помощью метода valid() можно проверить, привязан ли экземпляр к shared state и пригоден ли он тем самым к использованию [SWS_CORE_06227]. Как только результат извлекается с помощью GetResult()[SWS_CORE_06236] или get()[SWS_CORE_06226] либо регистрируется продолжение через then()[SWS_CORE_06231], объект Future теряет свое shared state и valid() возвращает false. Деструктор освобождает оставшееся разделяемое состояние [SWS_CORE_06233]. С точки зрения конкурентности операции проверки и уничтожения, такие как valid()[SWS_CORE_06227], is_ready()[SWS_CORE_06232] и деструктор [SWS_CORE_06233], потокобезопасны, тогда как изменяющие состояние операции, такие как GetResult()[SWS_CORE_06236], get()[SWS_CORE_06226] и функции ожидания [SWS_CORE_06228], не являются потокобезопасными.
В синхронном пути использования потребитель ожидает завершения асинхронной операции. С помощью is_ready() можно с минимальными блокировками запросить наличие значения или ошибки [SWS_CORE_06232]. В качестве альтернативы можно ожидать блокирующим образом с помощью wait()[SWS_CORE_06228] или с ограничением по времени через wait_for()[SWS_CORE_06229] и wait_until()[SWS_CORE_06230]. Если результат доступен, опрос значения предпочтительно выполняется безопасным по отношению к исключениям способом через GetResult(), благодаря чему возвращается ara::core::Result<void, E>[SWS_CORE_06236].
В асинхронном пути метод then() позволяет зарегистрировать функцию продолжения (continuation), которая выполняется, как только результат становится доступен [SWS_CORE_06231]. При этом опционально может быть передан контекст выполнения (executor) [SWS_CORE_06237]. Функция продолжения принимает Result<void, E> как rvalue. Возвращаемый тип then() автоматически распаковывает вложенные типы Future или Result (unwrapping) [SWS_CORE_06231].
Если зависящая от состояния операция (такая как GetResult(), is_ready(), wait(), wait_for(), wait_until() или then()) вызывается на недействительном экземпляре (valid() == false), возникает нарушение предусловия, которое обрабатывается как FutureInvalidViolation[SWS_CORE_06228], [SWS_CORE_06229], [SWS_CORE_06230], [SWS_CORE_06231], [SWS_CORE_06232], [SWS_CORE_06236], [SWS_CORE_06237]. При вызове get() на недействительном экземпляре вместо этого инициируется FutureException с кодом ошибки kNoState[SWS_CORE_06226]; при отключенных исключениях C++ get() не участвует в разрешении перегрузок [SWS_CORE_06226].
Если соответствующий promise был уничтожен или покинул разделяемое состояние без установки результата или явной ошибки, код ошибки FutureErrc::kBrokenPromise согласно [SWS_CORE_00400] сохраняется в shared state [SWS_CORE_06226], [SWS_CORE_06236]. Он возвращается методом GetResult() как ошибка в Result<void, E>[SWS_CORE_06236]. Если continuation, зарегистрированная в then(), генерирует исключение, не реализующее нарушение, это приводит к FutureContinuationHasThrownViolation[SWS_CORE_06231], [SWS_CORE_06237].
Данное руководство основано исключительно на спецификации AUTOSAR для ara::core::Future<void, E> в релизе 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_
Перегрузкиthen2
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).
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 195e9e272b48Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член get специализации ara::core::Future<void, E> служит для ожидания результата асинхронной операции без возвращаемого значения ([SWS_CORE_06226]). Она ведет себя как соответствующая функция std::future и блокирует вызывающую сторону до тех пор, пока не будет готов результат или ошибка ([SWS_CORE_06226], [SWS_CORE_00336]). После вызова экземпляр Future теряет валидность, так что выполняется valid() == false ([SWS_CORE_06226]).
Функция объявлена небезопасной относительно исключений (not exception safe) ([SWS_CORE_06226]). Если в связанном Promise была сохранена ошибка, инициируется соответствующее исключение ([SWS_CORE_06226]). Если общее состояние было преждевременно прекращено, возникает код ошибки kBrokenPromise согласно [SWS_CORE_00400] ([SWS_CORE_06226]). Если get выполняется на уже невалидном экземпляре, функция генерирует FutureException с кодом ошибки kNoState ([SWS_CORE_06226]).
Что касается параллелизма, метод не является потокобезопасным (not thread-safe) ([SWS_CORE_06226]). Поэтому параллельные обращения к одному и тому же объекту требуют внешней синхронизации. Кроме того, функция не участвует в разрешении перегрузки, если исключения C++ отключены в инструментарии компилятора ([SWS_CORE_06226]).
Во взаимодействии с родственными функциями [SWS_CORE_00332] (is_ready) гарантирует, что get заведомо не заблокирует выполнение, если операция уже завершена. Для контекстов без исключений AUTOSAR предлагает в качестве альтернативы [SWS_CORE_00336] (GetResult), который возвращает ошибки через тип результата вместо генерации исключений.
Этот текст был сгенерирован ИИ и служит в качестве ориентира; обязательную силу имеет спецификация AUTOSAR.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 161f9bad96abПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод then регистрирует операцию продолжения (continuation func) для экземпляра ara::core::Future<void, E>[SWS_CORE_06231]. Вызываемый объект принимает результат операции в виде rvalue-выражения типа Result<void, E>, которое внутренне предоставляется через GetResult[SWS_CORE_06231]. Вызов func может происходить синхронно в контексте then или асинхронно в контексте Promise::set_value(), Promise::SetError() либо в другом месте [SWS_CORE_06231].
Непосредственно после возврата из then исходный Future становится невалидным (valid() == false) [SWS_CORE_06231]. Тип возвращаемого значения адаптируется к типу возвращаемого значения U функции продолжения:
Если func возвращает Future<T2, E2>, выполняется неявная распаковка и then возвращает Future<T2, E2>[SWS_CORE_06231].
Если func возвращает Result<T2, E2>, оно также неявно распаковывается в Future<T2, E2>[SWS_CORE_06231].
Во всех остальных случаях возвращаемым типом является Future<U, E>[SWS_CORE_06231].
Обработка ошибок и граничные условия
Стандартизированные коды ошибок для этой функции не специфицированы [SWS_CORE_06231]. Метод объявлен как noexcept, однако определяет два нарушения (violations):
FutureInvalidViolation: возникает при вызове метода на невалидном Future (если valid() возвращает false) [SWS_CORE_06231].
FutureContinuationHasThrownViolation: возникает, если продолжение генерирует исключение, не реализующее Violation [SWS_CORE_06231]. Ошибки в продолжении должны вместо этого возвращаться упакованными в Result или Future[SWS_CORE_06231].
Параллелизм и взаимодействие
Метод не является потокобезопасным (not thread-safe) [SWS_CORE_06231]. После возврата из деструктора возвращенного Future ни одно зарегистрированное продолжение больше не выполняется; однако уже запущенное выполнение доводится до конца, поэтому деструктор может блокировать выполнение [SWS_CORE_06231]. В то время как [SWS_CORE_06231] относится к Future<void, E>, [SWS_CORE_00331] описывает вариант для типизированных Future Future<T, E>, а [SWS_CORE_06237] — перегрузку с явным исполнителем (Executor).
Этот текст был сгенерирован ИИ на основе спецификации 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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 96d3b0e93b60Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция then регистрирует вызываемый объект продолжения (continuation) func на экземпляре ara::core::Future<void, E> для выполнения в указанном контексте выполнения executor[SWS_CORE_06237]. Непосредственно после возврата из then вызывающий экземпляр Future теряет свою валидность, так что выполняется valid() == false[SWS_CORE_06237]. Продолжение получает результат исходного экземпляра Future в виде Result<void, E> в форме rvalue-выражения [SWS_CORE_06237]. В качестве возвращаемого значения вызов возвращает новый экземпляр Future, причем типы возвращаемого значения продолжения типа Future<T2, E2> или Result<T2, E2> неявно распаковываются в Future<T2, E2>; в противном случае возвращается Future<U, E>[SWS_CORE_06237].
В отношении параллелизма и жизненного цикла функция специфицирована как непотокобезопасная (not thread-safe) [SWS_CORE_06237]. Продолжение регистрируется во вновь возвращенном объекте Future. После возврата деструктора этого нового Future ни одно продолжение больше не должно выполняться; однако уже выполняющееся продолжение завершается полностью, из-за чего деструктор Future может блокироваться [SWS_CORE_06237].
Функция не объявляет стандартизированных кодов ошибок и определена как noexcept[SWS_CORE_06237]. Если она вызывается на недействительном экземпляре Future, возникает нарушение FutureInvalidViolation[SWS_CORE_06237]. Если продолжение генерирует исключение, это приводит к нарушению FutureContinuationHasThrownViolation[SWS_CORE_06237]. Исключения не должны покидать продолжение, а должны при необходимости преобразовываться в значения ошибок и возвращаться внутри Result или Future[SWS_CORE_06237]. Функция дополняет вариант без исполнителя [SWS_CORE_06231] и является аналогом перегрузок со значениями [SWS_CORE_00331], а также [SWS_CORE_00337].
Данное указание по использованию было создано ИИ и основано на спецификации 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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 480112e5c811Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция valid() синхронно проверяет, имеет ли экземпляр ara::core::Future<void, E> общее состояние (Shared State) и пригоден ли он тем самым к использованию [SWS_CORE_06227]. Согласно спецификации она ведёт себя аналогично соответствующей функции из std::future[SWS_CORE_06227]. В качестве возвращаемого значения она возвращает true, если Future пригоден для использования, и false, если он непригоден [SWS_CORE_06227].
Что касается параллелизма и обработки ошибок, метод объявлен как noexcept, является исключебно-безопасным (exception safe) и явно специфицирован как потокобезопасный (thread-safe) [SWS_CORE_06227]. Таким образом, его можно безопасно вызывать из параллельных контекстов.
Во взаимодействии с другими операциями valid() служит для контроля жизненного цикла:
Если для недействительного объекта Future (valid() == false) вызывается такая операция, как wait()[SWS_CORE_06228] или is_ready()[SWS_CORE_00332], это приводит к нарушению FutureInvalidViolation.
Потребляющие операции инвалидируют объект: после вызова get() Future больше не является действительным, так что последующие проверки с помощью valid() возвращают значение false[SWS_CORE_06226].
Аналогично, перемещение через then()[SWS_CORE_00331] или вызовы GetResult()[SWS_CORE_00336] приводят к немедленной инвалидации исходного объекта Future.
Данное указание по использованию было сгенерировано ИИ на основе спецификации.
Руководство разработчика реализации в подготовке (сложность I1)
Wait for a value or an error to be available. This function shall behave the same as the corresponding std::future function
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2f9ee5ecd1d4ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член wait специализации ara::core::Future<void, E> синхронно блокирует вызывающий поток до тех пор, пока результат асинхронной операции не станет доступен в виде значения или ошибки [SWS_CORE_06228]. Функция не принимает параметров, не возвращает значения (void) и в соответствии со спецификацией ведет себя как соответствующая функция std::future[SWS_CORE_06228].
В отношении обработки ошибок и граничных условий действуют следующие требования:
Безопасность исключений и обработка ошибок: операция объявлена с noexcept и специфицирована как безопасная относительно исключений (exception safe) [SWS_CORE_06228]. Если valid() возвращает false для экземпляра Future, имеет место нарушение FutureInvalidViolation[SWS_CORE_06228]. Конкретное следствие этого нарушения, вероятно, реализовано как платформозависимая обработка ошибок среды выполнения AUTOSAR. Вопрос Q-469e9abc947b9869 (открытый)
Параллелизм: функция классифицирована как непотокобезопасная (not thread-safe) [SWS_CORE_06228]. Поэтому параллельный доступ к одному и тому же объекту Future без внешней синхронизации недопустим.
Во взаимодействии с другими функциями модуля core существуют следующие возможности:
С помощью потокобезопасного метода is_ready можно заранее запросить, завершена ли операция; при возврате true метод wait гарантированно больше не блокирует выполнение [SWS_CORE_06232].
Для предотвращения бесконечной блокировки доступны функции с ограничением по времени wait_for с относительной длительностью [SWS_CORE_06229], а также wait_until с абсолютной временной меткой [SWS_CORE_06230].
Для первичного шаблонного класса ara::core::Future действуют те же правила синхронного ожидания и ограничения [SWS_CORE_00328].
Этот текст курирован системой ИИ и опирается исключительно на спецификацию 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
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 927a98d78cf3ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод wait_for специализации ara::core::Future<void, E> синхронно блокирует вызывающий поток на максимальный промежуток времени timeoutDuration или до тех пор, пока результат не станет готов [SWS_CORE_06229]. Семантически он ведет себя аналогично соответствующей стандартной функции std::future::wait_for[SWS_CORE_06229].
В качестве возвращаемого значения функция возвращает статус FutureStatus[SWS_CORE_06229]. Он сигнализирует с помощью FutureStatus::kReady, что значение или ошибка доступны, либо с помощью FutureStatus::kTimeout, что срок истек без получения результата [SWS_CORE_00361]. Состояние, эквивалентное std::future_status::deferred, не предусмотрено [SWS_CORE_00361]. Поведение соответствует общему интерфейсу Future [SWS_CORE_00329].
Для вызова действуют следующие условия относительно параллелизма и обработки ошибок:
Параллелизм: функция специфицирована как непотокобезопасная (not thread-safe) [SWS_CORE_06229]. Одновременные вызовы на одном и том же экземпляре должны быть защищены на стороне вызывающего кода.
Случаи ошибок и безопасность исключений: операция объявлена как безопасная относительно исключений (exception safe), а также noexcept[SWS_CORE_06229]. Если объект Future недействителен (valid() возвращает false), имеет место FutureInvalidViolation[SWS_CORE_06229]. Из-за объявления noexcept это нарушение, вероятно, приведет к немедленному аварийному завершению программы. Вопрос Q-4f01aa6e7fbfb12d (открытый)
Данное указание по использованию было создано автоматически на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 932b0d674f17Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член wait_until специализации ara::core::Future<void, E> блокирует вызывающий поток до тех пор, пока не будет достигнут указанный абсолютный момент времени deadline или пока не станет доступно значение либо ошибка [SWS_CORE_06230]. Функция демонстрирует такое же поведение, как и соответствующая стандартная функция C++ std::future::wait_until[SWS_CORE_06230], и обладает той же семантикой, что и универсальная перегрузка для ara::core::Future[SWS_CORE_00330].
Возвращаемое значение типа FutureStatus сигнализирует, истек ли предельный срок или стало доступно значение [SWS_CORE_06230]. При этом состояние kReady указывает на то, что разделяемое состояние готово, тогда как kTimeout означает, что разделяемое состояние не стало готовым до истечения предельного срока [SWS_CORE_00361]. Состояние, аналогичное std::future_status::deferred, в FutureStatus отсутствует [SWS_CORE_00361].
В отношении выполнения и граничных условий определены следующие требования:
Контекст вызова и поведение при исключениях: функция доступна через заголовочный файл #include "ara/core/future.h", объявлена как noexcept и специфицирована как безопасная относительно исключений (exception safe) [SWS_CORE_06230].
Состояния ошибок: если Future недействителен, то есть когда valid() возвращает значение false, имеет место нарушение FutureInvalidViolation[SWS_CORE_06230].
Параллелизм: операция классифицируется как непотокобезопасная (not thread-safe) [SWS_CORE_06230].
Данное указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал