Qt:如何取消对 QtConcurrent::map() 的所有处理?

Qt: How to cancel ALL processing of a QtConcurrent::map()?

我在 Windows7 平台上使用 Qt5。

在我当前的应用程序中,我使用 QtConcurrent 来处理容器中的所有项目。
如果我决定退出应用程序,我正在使用:QFuture::cancel().
根据文档 http://doc.qt.io/qt-5/qfuture.html#cancel,并非 所有 异步计算都被取消。可能只取消那些还没有开始的?而且running/ongoing的计算还允许继续到运行?

如果上述假设是正确的并且 QFuture::cancel() 不够 ,那么我应该怎么做才能停止 运行ning(正在进行的) 正常处理并退出应用程序?

您无法 pre-emptively 优雅地终止异步操作。操作本身必须支持 co-operative 取消。

换句话说,任何框架、库或操作系统都不可能为您提供此功能。您必须自己处理已开始的取消操作。