gal*_*han 7 c++ qt std qtconcurrent c++11
我正在考虑运行异步代码的两个选项:Qt Concurrent和std::async
.鉴于我正在使用Qt编写GUI应用程序,因此使用Qt Concurrent是有意义的.然而std::async
,所有主要编译器似乎也很好并且支持.
我应该使用Qt Concurrent还是std::async
新代码?比较两者时我还应该寻找什么呢?
鉴于我正在使用Qt编写GUI应用程序,因此使用Qt Concurrent是有意义的
我会说,这不是那么简单.我会尽可能多地使用标准库.但是,有一些限制需要考虑:
您是否需要在不支持C++ 11的平台上支持您的软件?
如果问题是肯定的,那么在基于Qt的软件中使用Qt解决方案是更好的选择.话虽如此,即使是这样,您也可以根据需要选择不同的Qt解决方案.一个是来自KDE的线程编织者,但是现在让我们走得那么远......
另一个问题,你可以问自己:
您是否已经拥有现有代码库?
根据答案,这也可以为决策提供进一步的方面,无论您喜欢一致性还是前瞻性思维.
还有一个问题要问:
我需要多少QtConcurrent?
根据确切的答案,它可能是也可能不是更好的选择.请注意,并非QtConcurrent的每个功能都在标准库中,例如QFutureWatcher
Qt信号槽机制.
所以,是的,作为Qt用户,我建议尽可能使用标准库.如今,Qt甚至明确依赖于它们,因此不会在不支持它的平台上运行.此外,总体方向似乎在Qt项目中正确.例如,很多东西都被淘汰了QtAlgorithms
,但这只是其中之一.