gpt4 book ai didi

c++ - 来自 Grand Central Dispatch 的 dispatch_async() 和来自 C++11 的 std::async

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:11:01 24 4
gpt4 key购买 nike

我有一些使用 GCD 实现并发和删除显式锁和线程的经验。

C++11提供了std::async,似乎也提供了一些类似的功能(我不是C++专家,错了不要怪我)。

抛开关于风格和语言偏好的争论,是否有任何基准来比较两者的性能,尤其是对于像 iOS 这样的平台?

从实用的角度来看,c++11 的 std::async 值得一试吗?

编辑:

正如 stackmonster 回答的那样,C++11 本身并没有提供与调度队列完全相同的东西。但是,是否可以创建一个具有原子数据结构(和可争论的 lambda 函数)的临时串行队列来实现这一点?

最佳答案

C++ 11 std::async 远不如中央调度那么复杂。

它更类似于java.util.concurrent包提供的异步并发模型为回调提供模板,但没有内置的性能优势。

我想说它们之间的区别就在于此。

回调模板没有特定的性能特征。 GCD 是关于性能的,线程化/多路复用这些回调以减少线程创建开销并允许排队和任务依赖性和线程池。

std::async 的启动策略在其复杂性上无法与 GCD 相提并论,并且无法实现移植。

我不太确定两者之间的基准会真正证明什么,因为它们并不是那么相似。

关于c++ - 来自 Grand Central Dispatch 的 dispatch_async() 和来自 C++11 的 std::async,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12990237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com