Я пытаюсь определить, когда я могу безопасно называть wait()
на std::future
и std::shared_future
. Я никогда не называю get()
на future
, а future
готов к вызову с помощью соответствующего метода set_value()
.
Я хочу ждать этого future
(используя wait()
, wait_for()
, wait_until()
) из нескольких потоков. Мне также нужны вызовы wait()
после того, как promise::set_value()
был вызван для немедленного возврата.
Из http://www.cplusplus.com/reference/future/future/wait/
Вызов этой функции-члена для недопустимого будущего объекта вызывает поведение undefined
Получение future
из promise
начинается с valid()==true
. Насколько я вижу только future::get()
устанавливает valid()
обратно на false. Правильно ли это предположение? Могу ли я назвать семейство функций wait()
так часто, как я хочу? Будет ли звонить на wait()
после того, как значение обещания будет установлено сразу же? Могу ли я вызвать их из нескольких потоков?