jjzjj

fobjc-weak

全部标签

c++ - LLVM/Clang 是否支持弱链接的 'weak' 属性?

简而言之:LLVM/Clang是否支持“弱”属性?我正在学习一些Arduino库源代码(更详细的是HardwareSerial.cpp),我发现了一些以前从未使用过的有趣属性weak:#ifdefined(HAVE_HWSERIAL0)voidserialEvent()__attribute__((weak));boolSerial0_available()__attribute__((weak));#endif我发现它很有趣,而且我读到如果未定义,链接器应将其设置为NULL。但是,在我使用Clang进行的测试中,我无法使用它。文件lib.cpp:#include"lib.h"#inc

c++ - Soft (not : weak) references in C++ - Is it possible? 有实现吗?

在C++中,我使用boost::shared_ptr和boost::weak_ptr自动删除不再需要的对象。我知道这些与引用计数一起工作。在Java中,内存由垃圾收集器管理,垃圾收集器将内置对象引用视为strong,将WeakReference视为weak并且SoftReference作为介于两者之间的东西(可能被GC收集,但也可能在GC中幸存下来),这对于缓存对象一段时间非常方便,但一旦可用内存变低就将它们丢弃。所以现在我又回到了C++中,我想念软引用带来的舒适感。我想知道软引用是否完全适用于引用计数。当对象的最后一个strong引用被清除,并且还剩下一个soft引用时,到底什么时候

c++ - 从 weak_ptr 泄漏原始指针的可移植 hack

我有一个由shared_ptr组成的对象结构,加上weak_ptr以避免循环。原始指针是不行的,因为boost::serialization在通过对象跟踪作为序列化时间进行反序列化时需要恢复共享指针和弱指针。对象生命周期模式很复杂(粒子模拟)但完全可以预测。每当我使用weak_ptr::lock()时,我确信指针仍然有效。通常,我使用lock().get(),因为我只需要在很短的时间内使用该对象。现在,lock().get()对性能有影响,因为它会增加共享计数(在lock()中),然后在不久之后减少它(临时shared_ptr被破坏)。这boost.develpost从2002年开始,

c++ - std::weak_ptr:锁或 shared_ptr 构造函数?

似乎有两种方法可以暂时获取weak_ptr指向的资源的所有权:使用lock()将weak_ptr传递给shared_ptr构造函数这两者都会产生一个shared_ptr,如果weak_ptr为空并且锁返回一个nullptrshared_ptr构造函数抛出异常。所以问题是:什么时候应该使用一个或另一个?是否有与此相关的一般准则或最佳做法? 最佳答案 复制自http://en.cppreference.com/w/cpp/memory/weak_ptr/lockBoththisfunctionandtheconstructorofstd

c++ - `weak_ptr` 和 `shared_ptr` 访问如何是原子的

std::shared_ptrint_ptr;intmain(){int_ptr=std::make_shared(1);std::threadth{[&](){std::weak_ptrint_ptr_weak=int_ptr;autoint_ptr_local=int_ptr_weak.lock();if(int_ptr_local){cout上面的代码线程安全吗?我读了这个答案Aboutthread-safetyofweak_ptr但只是想确保上面的代码是线程安全的。我问这个的原因是,如果上面的代码确实是线程安全的,我无法理解std::weak_ptr是如何实现的。和std::s

c++ - 将 std::weak_ptr 传递给函数有用吗?

我正在阅读thisarticle由HerbSutter撰写,关于将智能指针传递给函数。他没有提到std::weak_ptr,老实说,我找不到传递这种智能指针有用的好场景。函数是否拥有所有权?传递std::shared_ptr。函数是否只需要对底层对象进行操作?传递原始指针或引用。那么将std::weak_ptr传递给函数是否100%没用? 最佳答案 Soispassingstd::weak_ptrtofunctions100%useless?没有。考虑这个玩具示例。structPointerObserver{std::weak_pt

c++ - 是否有与 shared_from_this 等效的 weak_ptr?

我有一个类,我知道它将永远属于std::shared_ptr。然而,将shared_ptr甚至weak_ptr传递给不需要所有权或生命周期保证的函数和方法会产生不必要的开销。为了解决这个问题,我经常将原始指针传递给函数。该类本身继承自std::enable_shared_from_this,因此如果函数需要获取指针的所有权,它可以使用该类的方法来获取shared_ptr。一切都很顺利。然而,有些情况下我真的不想从原始指针创建一个shared_ptr,我想要的是一个weak_ptr。根据我对std::shared_ptr的通常实现的理解,它有两个用作引用计数器的原子变量;一个用于shar

c++ - 我可以从 boost 的 weak_ptr 获得原始指针吗?

是否可以从boost::weak_ptr获取原始指针?Boost的shared_ptr有get()方法和“->”运算符。weak_ptr不具有相同功能背后有什么理由吗? 最佳答案 weak_ptr拥有一个非拥有引用,因此它所引用的对象可能不再存在。使用weak_ptr持有的原始指针本质上是危险的。正确的方法是使用weak_ptr::lock()将weak_ptrboost为shared_ptr并从中获取指针。Boostweak_ptrdocumentation解释了为什么将get()功能作为weak_ptr的一部分提供是不安全的,并

objective-c - Xcode 7.3 无法使用手动引用计数在文件中创建 __weak 引用

更新到Xcode7.3后,它会在pod文件中抛出错误Cannotcreate__weakreferenceinfileusingmanualreferencecounting。有人解决过这个问题吗? 最佳答案 将BuildSettings->AppleLLVM7.1-Language-ObjectiveC->WeakReferencesinManualRetainRelease设置为YES。取自AppleDevelopersForums-Xcode7.3b4,non-arc,cannotcreate__weakreference.

weak-to-strong-generalization始终比母体更智能的人工智能,能否被它的母体所监管supervision,从而变的更强

正如supervison这个词,就像就是母亲对孩子的超级super愿景vision,比母亲更聪明更强,也就意味着要按照母亲期望的那样成长,不合理的行为要能够纠正supervison。一代比一代强,一代比一代好。弱模型监督能否激发出更强大模型的全部能力。研究发现,虽然在弱监督下微调的强大模型确实能超越其弱监督者的表现,但仅靠弱监督并不能完全发挥出强大模型的潜能。弱到强的泛化:研究表明,强大的预训练模型通常能在弱监督下展现出超越弱监督者的能力。例如,当使用GPT-2级别的模型生成的标签对GPT-4模型进行微调时,GPT-4通常能比GPT-2表现得更好,展现了所谓的“弱到强的泛化”现象。简单微调的局