Files
uWebSockets/examples/HelloWorldThreaded.cpp
T
2021-02-09 23:31:07 +01:00

34 lines
1.0 KiB
C++

#include "App.h"
#include <thread>
#include <algorithm>
#include <mutex>
std::mutex m;
int main() {
/* Overly simple hello world app, using multiple threads */
std::vector<std::thread *> threads(std::thread::hardware_concurrency());
std::transform(threads.begin(), threads.end(), threads.begin(), [](std::thread */*t*/) {
return new std::thread([]() {
uWS::App().get("/*", [](auto *res, auto * /*req*/) {
res->end("Hello world!");
}).listen(3000, [](auto *listen_socket) {
m.lock();
if (listen_socket) {
std::cout << "Thread " << std::this_thread::get_id() << " listening on port " << 3000 << std::endl;
} else {
std::cout << "Thread " << std::this_thread::get_id() << " failed to listen on port 3000" << std::endl;
}
m.unlock();
}).run();
});
});
std::for_each(threads.begin(), threads.end(), [](std::thread *t) {
t->join();
});
}