Pri*_*alj 0 c++ user-interface qt multithreading block
我正在压缩视频,将来我想一次压缩多个帧.我有一个线程,我称之为在每个帧上工作 - 这就是我在UI类中进行循环的原因.问题是UI被阻止了.为什么?这是因为我从for循环调用线程吗?
导致UI块的代码(Dialog.cpp):
for(int i=0; i<nFrames; i++)
{
//grab next frame from video source
myThread.setFrame(newFrame);
myThread.start();
myThread.wait();
result.append(myThread.GetResult());
}
Run Code Online (Sandbox Code Playgroud)
你在打电话wait,为什么你会期望wait不会阻止你?
来自Qt docs:
阻止线程,直到满足以下任一条件:
与此QThread对象关联的线程已完成执行(即从run()返回时).如果线程已完成,此函数将返回true.如果线程尚未启动,它也会返回true.时间毫秒已过.如果时间是ULONG_MAX(默认值),那么等待将永远不会超时(线程必须从run()返回).如果等待超时,此函数将返回false.
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |