Я пытаюсь измерить продолжительность вызова API, который возвращает объект std::future
.
Мой текущий подход выглядит следующим образом:
std::chrono::high_resolution_clock::time_point endTime, startTime = std::chrono::high_resolution_clock::now();
std::shared_future<API::response> responseFuture = API::request();
std::future_status status = responseFuture.wait_for(3s); // Some Timeout
if (status == std::future_status::ready)
endTime = std::chrono::high_resolution_clock::now();
else
// error handling
Однако я не уверен насчет использования std::future::wait_for
. cppreference.com состояния:
Эта функция может блокироваться дольше, чем timeout_duration, из-за задержек планирования или конфликта ресурсов.
Меня не беспокоит блокировка дольше, чем timeout_duration, но я требую wait_for
для немедленного возврата, как только объект std::future
станет доступным, то есть не имеет реализации, аналогичной
while(!ready){
std::this_thread::sleep_for(10ms);
}
Гарантируется ли это?