SetThreadPriority 不起作用,即使 GetThreadPriority 指示它是



我正在调用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);

在Windows中,所有UI都应该从同一个线程完成。特别是,这应该是创建主窗口的线程

违反此规则可能会产生意想不到的后果。

最新更新