summaryrefslogtreecommitdiffstatshomepage
path: root/test/threads.cpp
diff options
context:
space:
mode:
authorEgor Tensin <egor@tensin.name>2026-06-06 17:49:56 +0200
committerEgor Tensin <egor@tensin.name>2026-06-06 17:49:56 +0200
commit763f0ed522044adec12eaa1a768edfb1a98a635a (patch)
tree48fb2bd6eb210a046e520cdbf1401ce33b820cf1 /test/threads.cpp
parentREADME: update (diff)
downloadsetup-clang-763f0ed522044adec12eaa1a768edfb1a98a635a.tar.gz
setup-clang-763f0ed522044adec12eaa1a768edfb1a98a635a.zip
foo.cpp -> test/threads.cpp
Diffstat (limited to 'test/threads.cpp')
-rw-r--r--test/threads.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/threads.cpp b/test/threads.cpp
new file mode 100644
index 0000000..a7891bb
--- /dev/null
+++ b/test/threads.cpp
@@ -0,0 +1,39 @@
+#include <array>
+#include <cstddef>
+#include <exception>
+#include <functional>
+#include <iostream>
+#include <mutex>
+#include <thread>
+
+namespace {
+
+struct Counter {
+ std::mutex mtx;
+ std::size_t impl = 0;
+};
+
+void do_something(Counter& counter) {
+ std::lock_guard<std::mutex> lck{counter.mtx};
+ ++counter.impl;
+ std::cout << "Doing something #" << counter.impl << '\n';
+}
+
+}
+
+int main() {
+ try {
+ Counter counter;
+ std::array<std::thread, 3> workers;
+ for (auto& worker : workers) {
+ worker = std::thread{&do_something, std::ref(counter)};
+ }
+ for (auto& worker : workers) {
+ worker.join();
+ }
+ } catch (const std::exception& e) {
+ std::cerr << e.what() << '\n';
+ return 1;
+ }
+ return 0;
+}