std::packaged_task<R(Args...)>::operator()
void operator()( ArgTypes... args ); | (с C++11) |
Вызывает сохранённую задачу так, как если бы это было сделано INVOKE<R>(f, args...), где f — сохранённая задача. Возвращаемое значение задачи или любые возникающие исключения сохраняются в общем состоянии. Общее состояние подготавливается, и все потоки, ожидающие этого, разблокируются.
Параметры
| args | - | параметры для передачи при вызове сохранённой задачи |
Возвращаемое значение
(нет)
Исключения
std::future_error при следующих ошибках:
- Сохранённая задача уже была вызвана. Категория ошибки установлена в
promise_already_satisfied. -
*thisне имеет общего состояния. Категория ошибки установлена вno_state.
Пример
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| Отчёт об ошибке | Применимо к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 2142 | C++11 | успешный вызов оператора () синхронизирован с вызовом любого метода класса std::future илиstd::shared_future , которые делят своё общее состояние с *this | никаких дополнительных гарантий синхронизации, кроме тех, которые уже предоставляются общим состоянием |
См. также
| выполняет функцию, гарантируя, что результат готов только после завершения текущего потока (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/packaged_task/operator()