程序处理文件,起初非常小,找到一些结果并创建一个要处理的新文件。一段时间后,文件数量迅速增加。
我想使用QThreadPool处理所有文件。有人可以建议我应该如何制作或修正我的想法吗?
我决定在QThread中处理每个文件,并发送结果和带有信号的新作业。此外,在run()
函数的末尾,它会发出与插槽taskDone
连接的信号startNewTask
,如果有要处理的文件,则会启动新的QThread QThreadPool::globalInstance()->activeThreadCount()<MAX_THREAD_COUNT
。在开始时,我调用一个函数start
,它调用startNewTask
并等待所有线程(QThreadPool::globalInstance()->waitForDone();
)的完成。这里有一个问题:发出信号taskDone
但函数start
已完成且未调用插槽startNewTask
。
我该如何等到插槽开始?