summaryrefslogtreecommitdiffstats
path: root/library/cpp/threading/future/subscription/wait_ut_common.cpp
diff options
context:
space:
mode:
authorkuzin57 <[email protected]>2026-01-26 12:22:41 +0300
committerkuzin57 <[email protected]>2026-01-26 12:59:27 +0300
commit4a70eca87d0fea9a35044ebf904be96b86e2b2c8 (patch)
treea1e1c536ca67b0dd6e7d0f29b4d5a0f9d6523384 /library/cpp/threading/future/subscription/wait_ut_common.cpp
parent1d9c3ef1247f5847171b1afab464c01a8362c1cc (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.cpp26
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();
+}
+
+}