// See also https://bugs.kde.org/show_bug.cgi?id=416286 #include #include #include #include class counter { public: counter(): mutex() {} void get() { std::unique_lock lock(mutex); } private: std::mutex mutex; }; static counter& get_counter() { static counter manager; return manager; } static void do_work() { get_counter().get(); } int main() { std::vector v; for (int i = 0; i < 16; i++) v.emplace_back([]{ do_work(); }); for (auto& t : v) t.join(); std::cerr << "Done.\n"; }