GOOGLE ADS

вторник, 26 апреля 2022 г.

Получить статус std::future

Можно ли проверить std::future, закончился a или нет? Насколько я могу судить, единственный способ сделать это - позвонить wait_forс нулевой продолжительностью и проверить, является ли статусready или нет, но есть ли лучший способ?


Решение проблемы

Вы правы, и кроме звонкаwait_until с прошлым временем (что эквивалентно) нет лучшего способа.

Вы всегда можете написать небольшую обертку, если вам нужен более удобный синтаксис:

template<typename R>
bool is_ready(std::future<R> const& f)
{ return f.wait_for(std::chrono::seconds(0)) == std::future_status::ready; }

NB, если функция отложена, она никогда не вернет значение true, поэтому, вероятно, лучше проверить wait_forнепосредственно в случае, когда вы можете захотеть синхронно запустить отложенную задачу по прошествии определенного времени или когда загрузка системы низкая.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...