Pārlūkot izejas kodu

Add function to set thread name

Naming a thread is useful when debugging multi-threaded applications.
Richard Gale 10 gadi atpakaļ
vecāks
revīzija
8f07f5f7a9
2 mainītis faili ar 34 papildinājumiem un 0 dzēšanām
  1. 12 0
      include/bx/config.h
  2. 22 0
      include/bx/thread.h

+ 12 - 0
include/bx/config.h

@@ -43,4 +43,16 @@
 #	define BX_CONFIG_SUPPORTS_THREADING !(BX_PLATFORM_EMSCRIPTEN)
 #endif // BX_CONFIG_SUPPORTS_THREADING
 
+#ifndef BX_CONFIG_THREAD_NAME_LENGTH
+#   if BX_PLATFORM_WINDOWS
+#       define BX_CONFIG_THREAD_NAME_LENGTH 256
+#   elif BX_PLATFORM_OSX|BX_PLATFORM_IOS
+#       define BX_CONFIG_THREAD_NAME_LENGTH 64
+#   elif BX_PLATFORM_POSIX
+#       define BX_CONFIG_THREAD_NAME_LENGTH 16
+#   else
+#       define BX_CONFIG_THREAD_NAME_LENGTH 0
+#   endif
+#endif
+
 #endif // BX_CONFIG_H_HEADER_GUARD

+ 22 - 0
include/bx/thread.h

@@ -139,6 +139,27 @@ namespace bx
 			return m_exitCode;
 		}
 
+		void setThreadName(const char* name)
+		{
+			if (name != NULL)
+			{
+				strncpy(m_name, name, BX_CONFIG_THREAD_NAME_LENGTH);
+			}
+			else
+			{
+				memset(m_name, 0, BX_CONFIG_THREAD_NAME_LENGTH);
+			}
+
+#if BX_PLATFORM_WINDOWS
+#elif BX_PLATFORM_OSX|BX_PLATFORM_IOS
+			strncpy(m_name, name, BX_CONFIG_THREAD_NAME_LENGTH);
+			pthread_setname_np(m_name);
+#elif BX_PLATFORM_POSIX
+			strncpy(m_name, name, BX_CONFIG_THREAD_NAME_LENGTH);
+			pthread_setname_np(m_handle, m_name);
+#endif // BX_PLATFORM_
+		}
+
 	private:
 		int32_t entry()
 		{
@@ -179,6 +200,7 @@ namespace bx
 		uint32_t m_stackSize;
 		int32_t m_exitCode;
 		bool m_running;
+        char m_name[BX_CONFIG_THREAD_NAME_LENGTH];
 	};
 
 #if BX_PLATFORM_WINDOWS