Spec-Zone.ru › C++

std::packaged_task<R(Args...)>::operator()

void operator()( Args... args );
(начиная с C++11)

Вызывает сохранённую задачу, как если бы была вызвана INVOKE<R>(f,args...), где f — это сохранённая задача. Возвращаемое значение задачи или любые возникшие исключения сохраняются в общем состоянии. Общее состояние становится готовым, и все ожидающие этого потоки разблокируются.

Параметры

args - аргументы, передаваемые при вызове сохранённой задачи

Возвращаемое значение

(нет)

Исключения

std::future_error при следующих условиях ошибки:

  • Сохранённая задача уже была вызвана. Категория ошибки устанавливается в promise_already_satisfied.
  • У *this отсутствует общее состояние. Категория ошибки устанавливается в no_state.

Пример

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.

Отчёт об ошибке Применяется к Опубликованное поведение Корректное поведение
LWG 2142 C++11 успешный вызов operator() синхронизирован
с вызовом любой функции-члена std::future или
std::shared_future, разделяющих общее состояние с *this
никаких дополнительных гарантий
синхронизации, кроме уже
предоставляемых общим состоянием

См. также

make_ready_at_thread_exit
выполняет функцию, гарантируя, что результат будет готов только после завершения текущего потока
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/thread/packaged_task/operator()

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API