Как изменить имя потока

Различайте пользователей, которые запускают каждый экземпляр Redis.

ps -awef| grep redis
redis     11498     1  0 09:30 ?        00:00:02 /usr/bin/redis-server 127.0.0.1:6379
redis2    13285     1  0 10:00 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6380
9
задан 1800 INFORMATION 26 January 2009 в 04:55
поделиться

2 ответа

Используйте SetThreadName

8
ответ дан 4 December 2019 в 11:08
поделиться

Вот код, который я использую.

Это входит в заголовочный файл.

#pragma once

#define MS_VC_EXCEPTION 0x406d1388
#pragma warning(disable: 6312)
#pragma warning(disable: 6322)

typedef struct tagTHREADNAME_INFO
{
    DWORD dwType;        // must be 0x1000
    LPCSTR szName;       // pointer to name (in same addr space)
    DWORD dwThreadID;    // thread ID (-1 caller thread)
    DWORD dwFlags;       // reserved for future use, most be zero
} THREADNAME_INFO;

inline
void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName)
{
#ifdef _DEBUG
    THREADNAME_INFO info;
    info.dwType = 0x1000;
    info.szName = szThreadName;
    info.dwThreadID = dwThreadID;
    info.dwFlags = 0;

    __try
    {
        RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(DWORD), (DWORD *)&info);
    }
    __except (EXCEPTION_CONTINUE_EXECUTION)
    {
    }
#else
    dwThreadID;
    szThreadName;
#endif
}

Затем я называю его как эта внутренняя часть потоками proc.

SetThreadName(GetCurrentThreadId(), "VideoSource Thread");

Стоит отметить, что это - точный код, на который David отправил ссылку (Спасибо!, я забыл, где я получил его). Я не удалил это сообщение, потому что я хотел бы, чтобы код все еще был доступен, если MSDN решает реорганизовать свои ссылки (снова).

11
ответ дан 4 December 2019 в 11:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: