SetThreadPriority 不起作用,即使 GetThreadPriority 指示它是
SetThreadPriority isn't working even though GetThreadPriority indicates that it is
我正在调用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都应该从同一个线程完成。特别是,这应该是创建主窗口的线程
违反此规则可能会产生意想不到的后果。
相关文章:
- 如何指示结构成员没有锯齿?
- 查找数组中指示性较大但数组中值较小的元素
- 如何指示 cmake 的 gcc 版本?
- 如何指示 CMAKE 在 Visual Studio 中使用英特尔 MKL
- 如何设置叮当格式的注释编译指示,以免触及多行doxygen注释?
- C++警告:编译指示在主文件中一次
- C++-STL-矢量-为什么矢量中没有指示relocation_count的工具
- 如何使用 GCC 编译指示启用选项 '-Werror'?
- 为什么 c++ 使用 throw() 关键字来指示函数不会引发任何异常
- scanf() 语句中"%*[^n]"的格式字符串指示什么?分配抑制器 (*) 和否定扫描集 ([^) 如何协同工作?
- wcslen() 在使用编译指示包时返回不正确的结果
- Clang++ 6.0 内存清理器未报告返回值指示条件分支的函数中的未初始化局部变量
- 我怎么知道我最后的指示
- 没有相应 POP 的编译指示包(推送)会导致堆栈粉碎
- 指示 Qi 变换属性失败的适当方法是什么?
- 如何在 std::bind 中指示给定签名的重载函数?
- 如何指示指针C++所有权
- 是匿名联盟成员平等的指示
- C++(E0158 表达式必须是左值或函数指示符)和(错误 C2102 '&' 需要 l 值)
- 如何使一系列功能在C 中指示私有