mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 12:41:20 -06:00 
			
		
		
		
	Thread names shortened to 15 characters to fit Posix norm.
Added get_current_thread_name()
This commit is contained in:
		
							parent
							
								
									be73962699
								
							
						
					
					
						commit
						81b6883710
					
				
					 3 changed files with 19 additions and 2 deletions
				
			
		|  | @ -84,6 +84,13 @@ void set_current_thread_name(const char *thread_name) | |||
|     WindowsSetThreadName(::GetCurrentThread(), thread_name); | ||||
| } | ||||
| 
 | ||||
| void std::string get_current_thread_name() const | ||||
| { | ||||
| 	wchar_t *ptr = nullptr; | ||||
| 	::GetThreadDescription(::GetCurrentThread(), &ptr); | ||||
| 	return std::string((ptr == nullptr) ? "" : ptr); | ||||
| } | ||||
| 
 | ||||
| #else // _WIN32
 | ||||
| 
 | ||||
| // posix
 | ||||
|  | @ -102,6 +109,12 @@ void set_current_thread_name(const char *thread_name) | |||
| 	set_thread_name(pthread_self(), thread_name); | ||||
| } | ||||
| 
 | ||||
| void std::string get_current_thread_name() const | ||||
| { | ||||
| 	char buf[16]; | ||||
| 	return std::string(pthread_getname_np(pthread_self(), buf, 16) == 0 ? buf : ""); | ||||
| } | ||||
| 
 | ||||
| #endif // _WIN32
 | ||||
| 
 | ||||
| // Spawn (n - 1) worker threads on Intel TBB thread pool and name them by an index and a system thread ID.
 | ||||
|  | @ -149,7 +162,7 @@ void name_tbb_thread_pool_threads() | |||
| 			} else { | ||||
| 				assert(range.begin() > 0); | ||||
| 				std::ostringstream name; | ||||
| 		        name << "slic3r_tbbpool_" << range.begin() << "_" << thread_id; | ||||
| 		        name << "slic3r_tbb_" << range.begin(); | ||||
| 		        set_current_thread_name(name.str()); | ||||
|     		} | ||||
|         }); | ||||
|  |  | |||
|  | @ -7,6 +7,8 @@ | |||
| 
 | ||||
| namespace Slic3r { | ||||
| 
 | ||||
| // Set / get thread name.
 | ||||
| // pthread_setname_np supports maximum 15 character thread names! (16th character is the null terminator)
 | ||||
| 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); | ||||
|  | @ -14,6 +16,8 @@ inline void set_thread_name(boost::thread &thread, const std::string &thread_nam | |||
| 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()); } | ||||
| 
 | ||||
| void std::string get_current_thread_name() const; | ||||
| 
 | ||||
| // 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(); | ||||
|  |  | |||
|  | @ -224,7 +224,7 @@ void BackgroundSlicingProcess::process_sla() | |||
| 
 | ||||
| void BackgroundSlicingProcess::thread_proc() | ||||
| { | ||||
|     set_current_thread_name("slic3r_BackgroundSlicingProcess"); | ||||
|     set_current_thread_name("slic3r_BgSlcPcs"); | ||||
| 	name_tbb_thread_pool_threads(); | ||||
| 
 | ||||
| 	assert(m_print != nullptr); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vojtech Bubnik
						Vojtech Bubnik