Функция OpenThread не может определить идентификатор потока в режиме выпуска, но работает в режиме отладки.C++

Программы на C++. Форум разработчиков
Anonymous
Функция OpenThread не может определить идентификатор потока в режиме выпуска, но работает в режиме отладки.

Сообщение Anonymous »

У меня есть функция, которая приостанавливает потоки, кроме тех, которые выполняются на указанном идеальном процессоре. Функция работает нормально в режиме отладки, но не может обнаружить идентификаторы потоков в режиме выпуска. Вот соответствующий фрагмент кода:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include

void suspendThreadsExceptIdealProcessor(const std::wstring& processName, DWORD idealProcessor) {
DWORD processId = GetProcessIdByName(processName);
if (processId != 0) {
HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (hThreadSnap != INVALID_HANDLE_VALUE) {
THREADENTRY32 te32;
te32.dwSize = sizeof(THREADENTRY32);

if (Thread32First(hThreadSnap, &te32)) {
do {
if (te32.th32OwnerProcessID == processId) {
HANDLE hThread = OpenThread(THREAD_SUSPEND_RESUME | THREAD_QUERY_INFORMATION, FALSE, te32.th32ThreadID);
if (hThread) {
PROCESSOR_NUMBER procNumber;
BOOL success = GetThreadIdealProcessorEx(hThread, &procNumber);
if (success) {
if (procNumber.Number != idealProcessor) {
SuspendThread(hThread);
std::wcout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78715335/openthread-function-cannot-detect-thread-id-in-release-mode-but-works-in-debug-m[/url]

Вернуться в «C++»