diff options
author | ilnurkh <ilnurkh@yandex-team.com> | 2024-07-26 15:19:25 +0300 |
---|---|---|
committer | ilnurkh <ilnurkh@yandex-team.com> | 2024-07-26 15:31:14 +0300 |
commit | 696e048df66bace916e830df8fc37349098d22cf (patch) | |
tree | f23871493d3a95d3a2b96ea58e7591118277fbd2 /library/cpp/threading/future/future_ut.cpp | |
parent | 43c64f9b535d8e793a95647872127d2843ac0f01 (diff) | |
download | ydb-696e048df66bace916e830df8fc37349098d22cf.tar.gz |
TFuture add IsReady method
IsReady returns true if exception or value was set.
allows to check readiness without locking cheŃker-thread
NOTE: returns true even if value was extracted from promise
good replace for HasValue() || HasException()
b2d64093e25cef5a350dfebe784c449203a5b383
Diffstat (limited to 'library/cpp/threading/future/future_ut.cpp')
-rw-r--r-- | library/cpp/threading/future/future_ut.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/library/cpp/threading/future/future_ut.cpp b/library/cpp/threading/future/future_ut.cpp index 26f8fa9e9c..ceb07cae93 100644 --- a/library/cpp/threading/future/future_ut.cpp +++ b/library/cpp/threading/future/future_ut.cpp @@ -105,6 +105,7 @@ namespace { future = MakeFuture(345); UNIT_ASSERT(future.HasValue()); + UNIT_ASSERT(future.IsReady()); UNIT_ASSERT_EQUAL(future.GetValue(), 345); } @@ -115,6 +116,7 @@ namespace { TFuture<void> future = promise.GetFuture(); UNIT_ASSERT(future.HasValue()); + UNIT_ASSERT(future.IsReady()); future = MakeFuture(); UNIT_ASSERT(future.HasValue()); @@ -523,6 +525,7 @@ namespace { { auto future1 = MakeErrorFuture<void>(std::make_exception_ptr(TFutureException())); UNIT_ASSERT(future1.HasException()); + UNIT_ASSERT(future1.IsReady()); UNIT_CHECK_GENERATED_EXCEPTION(future1.GetValue(), TFutureException); auto future2 = MakeErrorFuture<int>(std::make_exception_ptr(TFutureException())); @@ -563,6 +566,7 @@ namespace { promise2.SetException("foo-exception"); wait.Wait(); UNIT_ASSERT(future2.HasException()); + UNIT_ASSERT(!future1.IsReady()); UNIT_ASSERT(!future1.HasValue() && !future1.HasException()); } |