我在多线程应用程序中面临一个问题,需要让UI和整个操作系统保持响应。
我正在开发一款基于C++和Qt的应用程序,该应用程序同时从多个流接收和转换大量视频帧。
每个流都在其自己的独立工作线程(使用DirectX)中检索、转换和渲染。这意味着我没有使用默认的GUI线程来渲染帧。
在一台性能强劲的计算机上,我没有问题,因为CPU可以处理所有数据并及时为GUI线程处理用户请求。但在一台老旧的计算机上,它不起作用,CPU被用于100%来处理我的数据,UI会出现滞后,可能需要10秒钟才能处理按钮单击。
我想让我的UI响应快速。事实上,我只希望我的工作线程在没有其他任务要做的情况下工作。我尝试将工作线程优先级更改为低,但它不起作用。我还尝试在工作线程中使用sleep(10),但由于可能有很多线程,它们不会同时进入睡眠状态,所以也行不通。
无论使用哪种工具包,最好的方法是什么,以保持在这种情况下UI的响应性?