|
我也是按照这个逻辑来写的,如果把线程ABC看成一个事件,不循环,只要他们顺序执行,那就可以获得预期的结果。一旦进入循环后,这个线程A,在即将结束发finished信号给主线程,然后主线程调用线程B和C。在这个阶段,线程ABC会跳过前面n-2次循环,只运行最后一次循环。
例如
for(int i = 0; i < 3; i++)
{
//线程A
threadA.start();
//线程B
threadB.start();
//线程C
threadC.start();
}
i = 0, 线程A、B、C第一次start(),但没有进入run()
i = 1, 线程A、B、C第二次start(),但没有进入run()
i = 2, 线程A、B、C第三次start(),但进入run()。
我预期是想通过循环把这个事件从线程A到C依次执行的,结果,它前两次都没有执行,直接跳过,只允许了最后一次。这个要怎么解决才能实现整个事件循环呢?除了每个线程都wait()阻塞外,有什么方法可以令它不阻塞。因为这个是一个槽函数,在主线程上调用。用wait()会引起界面卡顿的现象。 |
|