C++ SetThreadPriority是';即使GetThreadPriority指示它是
我正在调用SetThreadPriority(m_hThread,THREAD_PRIORITY_高于正常值),然后立即调用GetThreadPriority(m_hThread),以验证优先级是否已设置。根据GetThreadPriority(),SetThreadPriority()工作正常,但线程的性能没有改变 我已经创建了一个线程来通过动画GIF的帧设置动画。只要没有其他事情发生,GIF就可以完美地进行动画制作,但只要进程的主线程忙起来,GIF就会冻结,直到主线程完成其工作 我已经尝试将线程提升到线程优先级最高和线程优先级时间关键,但没有任何区别。当主线程繁忙时,GIF线程仍然冻结 我已经阅读了所有我能在网上找到的关于线程优先级的内容,并且我的代码没有任何错误,所以我没有什么想法 感谢您的帮助C++ SetThreadPriority是';即使GetThreadPriority指示它是,c++,multithreading,visual-studio-2013,windows-7,C++,Multithreading,Visual Studio 2013,Windows 7,我正在调用SetThreadPriority(m_hThread,THREAD_PRIORITY_高于正常值),然后立即调用GetThreadPriority(m_hThread),以验证优先级是否已设置。根据GetThreadPriority(),SetThreadPriority()工作正常,但线程的性能没有改变 我已经创建了一个线程来通过动画GIF的帧设置动画。只要没有其他事情发生,GIF就可以完美地进行动画制作,但只要进程的主线程忙起来,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都应该从同一线程完成。特别是,这应该是创建主窗口的线程
违反此规则可能会产生意外的后果。在Windows中,所有UI都应在同一线程中完成。特别是,这应该是创建主窗口的线程
违反此规则可能会产生意外后果。这听起来更像是锁定问题,“主”线程锁定某些资源的时间超过了它需要的时间。这听起来更像是锁定问题,“主”线程锁定某些资源的时间超过了它需要的时间。类似地,任何非平凡的工作都应该尽可能移出UI线程。同样,任何非平凡的工作都应该尽可能移出UI线程。