Qt Concurrent或std :: async的新代码?

gal*_*han 7 c++ qt std qtconcurrent c++11

我正在考虑运行异步代码的两个选项:Qt Concurrentstd::async.鉴于我正在使用Qt编写GUI应用程序,因此使用Qt Concurrent是有意义的.然而std::async,所有主要编译器似乎也很好并且支持.

我应该使用Qt Concurrent还是std::async新代码?比较两者时我还应该寻找什么呢?

lpa*_*app 7

鉴于我正在使用Qt编写GUI应用程序,因此使用Qt Concurrent是有意义的

我会说,这不是那么简单.我会尽可能多地使用标准库.但是,有一些限制需要考虑:

您是否需要在不支持C++ 11的平台上支持您的软件?

如果问题是肯定的,那么在基于Qt的软件中使用Qt解决方案是更好的选择.话虽如此,即使是这样,您也可以根据需要选择不同的Qt解决方案.一个是来自KDE的线程编织者,但是现在让我们走得那么远......

另一个问题,你可以问自己:

您是否已经拥有现有代码库?

根据答案,这也可以为决策提供进一步的方面,无论您喜欢一致性还是前瞻性思维.

还有一个问题要问:

我需要多少QtConcurrent?

根据确切的答案,它可能是也可能不是更好的选择.请注意,并非QtConcurrent的每个功能都在标准库中,例如QFutureWatcherQt信号槽机制.

所以,是的,作为Qt用户,我建议尽可能使用标准库.如今,Qt甚至明确依赖于它们,因此不会在不支持它的平台上运行.此外,总体方向似乎在Qt项目中正确.例如,很多东西都被淘汰了QtAlgorithms,但这只是其中之一.