aboutsummaryrefslogtreecommitdiff
path: root/zenserver-test/zenserver-test.cpp
diff options
context:
space:
mode:
authorMartin Ridgers <[email protected]>2021-11-12 15:09:55 +0100
committerMartin Ridgers <[email protected]>2021-11-15 09:08:18 +0100
commit620d00b775414530cb8f44be48717056718c4a1f (patch)
tree99cc95e66b67034ae89b70822ed9c4daad0b813a /zenserver-test/zenserver-test.cpp
parentFixed "move prevents copy elision" compiler warning (diff)
downloadzen-620d00b775414530cb8f44be48717056718c4a1f.tar.xz
zen-620d00b775414530cb8f44be48717056718c4a1f.zip
Implemented a basic Concurrency::parallel_invoke() for Linux and Mac
Diffstat (limited to 'zenserver-test/zenserver-test.cpp')
-rw-r--r--zenserver-test/zenserver-test.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp
index 1f42cbcd3..64da36a5f 100644
--- a/zenserver-test/zenserver-test.cpp
+++ b/zenserver-test/zenserver-test.cpp
@@ -45,6 +45,7 @@ ZEN_THIRD_PARTY_INCLUDES_END
#include <map>
#include <random>
#include <span>
+#include <thread>
#include <unordered_map>
#if ZEN_PLATFORM_WINDOWS
@@ -70,6 +71,25 @@ ZEN_THIRD_PARTY_INCLUDES_END
using namespace fmt::literals;
using namespace std::literals;
+#if ZEN_PLATFORM_LINUX || ZEN_PLATFORM_MACOS
+struct Concurrency
+{
+ template <typename... T>
+ static void parallel_invoke(T&&... t)
+ {
+ constexpr size_t NumTs = sizeof...(t);
+ std::thread Threads[NumTs] = {
+ std::thread(std::forward<T>(t))...,
+ };
+
+ for (std::thread& Thread : Threads)
+ {
+ Thread.join();
+ }
+ }
+};
+#endif
+
/*
___ ___ _________ _________ ________ ________ ___ ___ _______ ________ _________