Add function to set thread name

Naming a thread is useful when debugging multi-threaded applications.
This commit is contained in:
Richard Gale
2015-08-23 15:08:30 -07:00
parent 684256f30d
commit 8f07f5f7a9
2 changed files with 34 additions and 0 deletions

View File

@@ -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

View File

@@ -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