" template and BOOST's "shared_ptr<>" template?-6ren"> " template and BOOST's "shared_ptr<>" template?-我正在着手进行一些 Android NATIVE 编码(例如 C++,而不是 Java),并且需要使用相当未记录的 sp<>(“强指针”)refcount'd 指针类。 据我所知,Android sp-6ren">
gpt4 book ai didi

android - 共享指针 : are there any gotcha differences between Android's "sp<>" template and BOOST's "shared_ptr<>" template?

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

我正在着手进行一些 Android NATIVE 编码(例如 C++,而不是 Java),并且需要使用相当未记录的 sp<>(“强指针”)refcount'd 指针类。

据我所知,Android sp<> 模板看起来非常像更熟悉的 BOOST shared_ptr<> 模板。标准的重新计票机制。它们似乎不兼容。例如,强指针似乎不是线程安全的。两者之间还有哪些问题?

一个更广泛的问题是:为什么没有 NDK 的在线引用?他们在 developer.android.com 上是否有足够的磁盘空间问题,以至于无法将其放在那里?发牢骚。

最佳答案

Android 的 sp<>没有记录,因为它是平台的一部分,并且它的实现可能会在平台修订之间发生变化。您不应在 NDK 代码中使用它,除非您将所有 header 和相应的源文件复制到您自己的项目中。

出于性能原因,它故意不是线程安全的:实际上执行线程安全的引用计数需要添加内存屏障指令,这会显着在 ARM 上减慢操作(在 x86 和 x86_64 上不是那么多)尽管)。出于这个原因,甚至 Chrome 也使用两个不同的类来实现引用计数(即 base::RefCountedbase::RefCountedThreadSafe)。

至于其他陷阱,我真的说不出来,但我猜弱指针的实现也与 Boost 不同。在任何情况下,如果您不理解此代码的作用,请不要使用它,它不适合一般消费。

关于android - 共享指针 : are there any gotcha differences between Android's "sp<>" template and BOOST's "shared_ptr<>" template?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21322435/

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