我正在尝试测量返回std::future
对象的 API 调用的持续时间。
我目前的方法如下所示:
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);
}
这是有保证的吗?