Я вызываю SetThreadPriority (m_hThread, THREAD_PRIORITY_ABOVE_NORMAL) и вызываю GetThreadPriority (m_hThread) сразу после этого, чтобы убедиться, что приоритет установлен.Согласно GetThreadPriority (), SetThreadPriority () работает нормально, но производительность потока не меняется.
Я создал поток для анимации через кадры анимированного GIF.GIF прекрасно анимируется, если больше ничего не происходит, но как только основной поток процесса становится занятым, GIF останавливается, пока основной поток не заканчивает свою работу.
Я попытался поднять поток доTHREAD_PRIORITY_HIGHEST и THREAD_PRIORITY_TIME_CRITICAL, но ничто не имеет значения.Поток GIF по-прежнему зависает, когда основной поток занят.
Я прочитал все, что могу найти в Интернете о приоритетах потоков, и не могу найти ничего плохого в своем коде, поэтому у меня нет идей.
Любая помощь приветствуется.
m_hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadWrapper, this, CREATE_SUSPENDED, NULL);
DWORD dwThreadPriority1 = ::GetThreadPriority(m_hThread);
BOOL b = ::SetThreadPriority(m_hThread, THREAD_PRIORITY_ABOVE_NORMAL);
DWORD dwThreadPriority2 = ::GetThreadPriority(m_hThread);
ASSERT(THREAD_PRIORITY_ABOVE_NORMAL == dwThreadPriority2);
ResumeThread(m_hThread);