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 取消。
换句话说,任何框架、库或操作系统都不可能为您提供此功能。您必须自己处理已开始的取消操作。
我在 Windows7 平台上使用 Qt5。
在我当前的应用程序中,我使用 QtConcurrent
来处理容器中的所有项目。
如果我决定退出应用程序,我正在使用:QFuture::cancel()
.
根据文档 http://doc.qt.io/qt-5/qfuture.html#cancel,并非 所有 异步计算都被取消。可能只取消那些还没有开始的?而且running/ongoing的计算还允许继续到运行?
如果上述假设是正确的并且 QFuture::cancel()
不够 ,那么我应该怎么做才能停止 运行ning(正在进行的) 正常处理并退出应用程序?
您无法 pre-emptively 优雅地终止异步操作。操作本身必须支持 co-operative 取消。
换句话说,任何框架、库或操作系统都不可能为您提供此功能。您必须自己处理已开始的取消操作。