diff options
| author | kuzin57 <[email protected]> | 2026-01-26 12:22:41 +0300 |
|---|---|---|
| committer | kuzin57 <[email protected]> | 2026-01-26 12:59:27 +0300 |
| commit | 4a70eca87d0fea9a35044ebf904be96b86e2b2c8 (patch) | |
| tree | a1e1c536ca67b0dd6e7d0f29b4d5a0f9d6523384 /library/cpp/threading/future/subscription/wait_ut_common.cpp | |
| parent | 1d9c3ef1247f5847171b1afab464c01a8362c1cc (diff) | |
feat contrib: add futures subscription from contrib
<https://nda.ya.ru/t/nesU8Ssd7StzZd>
commit_hash:3b5733332bec71a4f2f26e6e878afb23dde01fe7
Diffstat (limited to 'library/cpp/threading/future/subscription/wait_ut_common.cpp')
| -rw-r--r-- | library/cpp/threading/future/subscription/wait_ut_common.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/library/cpp/threading/future/subscription/wait_ut_common.cpp b/library/cpp/threading/future/subscription/wait_ut_common.cpp new file mode 100644 index 00000000000..9f961e73036 --- /dev/null +++ b/library/cpp/threading/future/subscription/wait_ut_common.cpp @@ -0,0 +1,26 @@ +#include "wait_ut_common.h" + +#include <util/random/shuffle.h> +#include <util/system/event.h> +#include <util/thread/pool.h> + +namespace NThreading::NTest::NPrivate { + +void ExecuteAndWait(TVector<std::function<void()>> jobs, TFuture<void> waiter, size_t threads) { + Y_ENSURE(threads > 0); + Shuffle(jobs.begin(), jobs.end()); + auto pool = CreateThreadPool(threads); + TManualEvent start; + for (auto& j : jobs) { + pool->SafeAddFunc( + [&start, job = std::move(j)]() { + start.WaitI(); + job(); + }); + } + start.Signal(); + waiter.Wait(); + pool->Stop(); +} + +} |
