From 38c06d95242a3b95113cc8950d435098bed0386b Mon Sep 17 00:00:00 2001 From: Lanzheng Liu Date: Thu, 23 May 2024 12:14:28 +0800 Subject: [PATCH] fix suspend timeout for Awaiter (#490) Signed-off-by: liulanzheng --- thread/awaiter.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/thread/awaiter.h b/thread/awaiter.h index fdf4c234..fb1966fc 100644 --- a/thread/awaiter.h +++ b/thread/awaiter.h @@ -52,10 +52,15 @@ struct Awaiter { std::promise p; void resume() { return p.set_value(); } int suspend(Timeout timeout = {}) { - auto ret = p.get_future().wait_for(timeout.std_duration()); - if (ret == std::future_status::timeout) { - errno = ETIMEDOUT; - return -1; + auto duration = timeout.std_duration(); + if (duration == std::chrono::microseconds().max()) { + p.get_future().wait(); + } else { + auto ret = p.get_future().wait_for(duration); + if (ret == std::future_status::timeout) { + errno = ETIMEDOUT; + return -1; + } } return 0; }