diff options
author | rzhikharevich <rzhikharevich@yandex-team.ru> | 2022-02-10 16:51:00 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:51:00 +0300 |
commit | 3fd404e3c028261bd5c6720cd67d4b755740d161 (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/threading | |
parent | 724861a587a9d8ecec238aec4c37154e3f2409bb (diff) | |
download | ydb-3fd404e3c028261bd5c6720cd67d4b755740d161.tar.gz |
Restoring authorship annotation for <rzhikharevich@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/threading')
-rw-r--r-- | library/cpp/threading/future/core/future-inl.h | 8 | ||||
-rw-r--r-- | library/cpp/threading/future/future_ut.cpp | 158 |
2 files changed, 83 insertions, 83 deletions
diff --git a/library/cpp/threading/future/core/future-inl.h b/library/cpp/threading/future/core/future-inl.h index e0ddd4295e..5fd4296a93 100644 --- a/library/cpp/threading/future/core/future-inl.h +++ b/library/cpp/threading/future/core/future-inl.h @@ -621,8 +621,8 @@ namespace NThreading { template <typename F> inline TFuture<TFutureType<TFutureCallResult<F, T>>> TFuture<T>::Apply(F&& func) const { auto promise = NewPromise<TFutureType<TFutureCallResult<F, T>>>(); - Subscribe([promise, func = std::forward<F>(func)](const TFuture<T>& future) mutable { - NImpl::SetValue(promise, [&]() { return func(future); }); + Subscribe([promise, func = std::forward<F>(func)](const TFuture<T>& future) mutable { + NImpl::SetValue(promise, [&]() { return func(future); }); }); return promise; } @@ -720,8 +720,8 @@ namespace NThreading { template <typename F> inline TFuture<TFutureType<TFutureCallResult<F, void>>> TFuture<void>::Apply(F&& func) const { auto promise = NewPromise<TFutureType<TFutureCallResult<F, void>>>(); - Subscribe([promise, func = std::forward<F>(func)](const TFuture<void>& future) mutable { - NImpl::SetValue(promise, [&]() { return func(future); }); + Subscribe([promise, func = std::forward<F>(func)](const TFuture<void>& future) mutable { + NImpl::SetValue(promise, [&]() { return func(future); }); }); return promise; } diff --git a/library/cpp/threading/future/future_ut.cpp b/library/cpp/threading/future/future_ut.cpp index ccc214372d..05950a568d 100644 --- a/library/cpp/threading/future/future_ut.cpp +++ b/library/cpp/threading/future/future_ut.cpp @@ -9,32 +9,32 @@ namespace NThreading { namespace { - class TCopyCounter { - public: - TCopyCounter(size_t* numCopies) - : NumCopies(numCopies) - {} - - TCopyCounter(const TCopyCounter& that) - : NumCopies(that.NumCopies) - { - ++*NumCopies; - } - - TCopyCounter& operator=(const TCopyCounter& that) { - NumCopies = that.NumCopies; - ++*NumCopies; - return *this; - } - - TCopyCounter(TCopyCounter&& that) = default; - - TCopyCounter& operator=(TCopyCounter&& that) = default; - - private: - size_t* NumCopies = nullptr; - }; - + class TCopyCounter { + public: + TCopyCounter(size_t* numCopies) + : NumCopies(numCopies) + {} + + TCopyCounter(const TCopyCounter& that) + : NumCopies(that.NumCopies) + { + ++*NumCopies; + } + + TCopyCounter& operator=(const TCopyCounter& that) { + NumCopies = that.NumCopies; + ++*NumCopies; + return *this; + } + + TCopyCounter(TCopyCounter&& that) = default; + + TCopyCounter& operator=(TCopyCounter&& that) = default; + + private: + size_t* NumCopies = nullptr; + }; + template <typename T> auto MakePromise() { if constexpr (std::is_same_v<T, void>) { @@ -582,59 +582,59 @@ namespace { TestFutureStateId<void>(); TestFutureStateId<int>(); } - - template <typename T> - void TestApplyNoRvalueCopyImpl() { - size_t numCopies = 0; - TCopyCounter copyCounter(&numCopies); - - auto promise = MakePromise<T>(); - - const auto future = promise.GetFuture().Apply( - [copyCounter = std::move(copyCounter)] (const auto&) {} - ); - - if constexpr (std::is_same_v<T, void>) { - promise.SetValue(); - } else { - promise.SetValue(T()); - } - - future.GetValueSync(); - - UNIT_ASSERT_VALUES_EQUAL(numCopies, 0); - } - - Y_UNIT_TEST(ApplyNoRvalueCopy) { - TestApplyNoRvalueCopyImpl<void>(); - TestApplyNoRvalueCopyImpl<int>(); - } - - template <typename T> - void TestApplyLvalueCopyImpl() { - size_t numCopies = 0; - TCopyCounter copyCounter(&numCopies); - - auto promise = MakePromise<T>(); - - auto func = [copyCounter = std::move(copyCounter)] (const auto&) {}; - const auto future = promise.GetFuture().Apply(func); - - if constexpr (std::is_same_v<T, void>) { - promise.SetValue(); - } else { - promise.SetValue(T()); - } - - future.GetValueSync(); - - UNIT_ASSERT_VALUES_EQUAL(numCopies, 1); - } - - Y_UNIT_TEST(ApplyLvalueCopy) { - TestApplyLvalueCopyImpl<void>(); - TestApplyLvalueCopyImpl<int>(); - } + + template <typename T> + void TestApplyNoRvalueCopyImpl() { + size_t numCopies = 0; + TCopyCounter copyCounter(&numCopies); + + auto promise = MakePromise<T>(); + + const auto future = promise.GetFuture().Apply( + [copyCounter = std::move(copyCounter)] (const auto&) {} + ); + + if constexpr (std::is_same_v<T, void>) { + promise.SetValue(); + } else { + promise.SetValue(T()); + } + + future.GetValueSync(); + + UNIT_ASSERT_VALUES_EQUAL(numCopies, 0); + } + + Y_UNIT_TEST(ApplyNoRvalueCopy) { + TestApplyNoRvalueCopyImpl<void>(); + TestApplyNoRvalueCopyImpl<int>(); + } + + template <typename T> + void TestApplyLvalueCopyImpl() { + size_t numCopies = 0; + TCopyCounter copyCounter(&numCopies); + + auto promise = MakePromise<T>(); + + auto func = [copyCounter = std::move(copyCounter)] (const auto&) {}; + const auto future = promise.GetFuture().Apply(func); + + if constexpr (std::is_same_v<T, void>) { + promise.SetValue(); + } else { + promise.SetValue(T()); + } + + future.GetValueSync(); + + UNIT_ASSERT_VALUES_EQUAL(numCopies, 1); + } + + Y_UNIT_TEST(ApplyLvalueCopy) { + TestApplyLvalueCopyImpl<void>(); + TestApplyLvalueCopyImpl<int>(); + } } } |