#ifndef GUI_THREAD_HPP #define GUI_THREAD_HPP #include #include #include namespace Slic3r { void set_thread_name(std::thread &thread, const char *thread_name); inline void set_thread_name(std::thread &thread, const std::string &thread_name) { set_thread_name(thread, thread_name.c_str()); } void set_thread_name(boost::thread &thread, const char *thread_name); inline void set_thread_name(boost::thread &thread, const std::string &thread_name) { set_thread_name(thread, thread_name.c_str()); } void set_current_thread_name(const char *thread_name); inline void set_current_thread_name(const std::string &thread_name) { set_current_thread_name(thread_name.c_str()); } // To be called somewhere before the TBB threads are spinned for the first time, to // give them names recognizible in the debugger. void name_tbb_thread_pool_threads(); template inline boost::thread create_thread(boost::thread::attributes &attrs, Fn &&fn) { // Duplicating the stack allocation size of Thread Building Block worker // threads of the thread pool: allocate 4MB on a 64bit system, allocate 2MB // on a 32bit system by default. attrs.set_stack_size((sizeof(void*) == 4) ? (2048 * 1024) : (4096 * 1024)); return boost::thread{attrs, std::forward(fn)}; } template inline boost::thread create_thread(Fn &&fn) { boost::thread::attributes attrs; return create_thread(attrs, std::forward(fn)); } } #endif // GUI_THREAD_HPP