15 #include <system_error>
25 std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds));
45 template<
class TFn,
class... TArgs>
46 inline bool StartNewThread(std::thread *thr,
const char *name, TFn&& _Fx, TArgs&&... _Ax)
49 static std::mutex thread_startup_mutex;
50 std::lock_guard<std::mutex>
lock(thread_startup_mutex);
52 std::thread t([] (
const char *name, TFn&& F, TArgs&&... A) {
57 std::lock_guard<std::mutex>
lock(thread_startup_mutex);
68 }, name, std::forward<TFn>(_Fx), std::forward<TArgs>(_Ax)...);
77 }
catch (
const std::system_error &e) {
79 Debug(misc, 1,
"Can't create thread '{}': {}", name, e.what());