草庐IT

c++ - 理解 C++11 中的 std::atomic::compare_exchange_weak()

boolcompare_exchange_weak(T&expected,Tval,..);compare_exchange_weak()是C++11中提供的比较交换原语之一。它是弱从某种意义上说,即使对象的值等于expected,它也会返回false。.这是由于虚假故障在一些使用一系列指令(而不是x86上的指令)来实现它的平台上。在这样的平台上,上下文切换、另一个线程重新加载相同地址(或缓存行)等可能会使原语失败。它是spurious因为它不是操作失败的对象的值(不等于expected)。相反,这是一种时间问题。但令我困惑的是C++11标准(ISO/IEC14882)中所说的,29.

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

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

c++ - weak_ptr 的性能损失是多少?

我目前正在为游戏设计一个对象结构,在我的例子中,最自然的组织变成了一棵树。作为智能指针的忠实粉丝,我只使用shared_ptr的。然而,在这种情况下,树中的子节点需要访问它的父节点(例如——map上的生物需要能够访问map数据——因此他们的父节点的数据。拥有的方向当然是map拥有它的存在,因此持有指向它们的共享指针。然而,为了从一个存在中访问map数据,我们需要一个指向父级的指针——智能指针的方式是使用一个引用,即weak_ptr。但是,我曾经读到锁定weak_ptr是一项昂贵的操作——也许这不再是真的了——但考虑到weak_ptr会经常被锁定,我担心这种设计注定性能不佳。因此问题:锁

c++ - weak_ptr 的性能损失是多少?

我目前正在为游戏设计一个对象结构,在我的例子中,最自然的组织变成了一棵树。作为智能指针的忠实粉丝,我只使用shared_ptr的。然而,在这种情况下,树中的子节点需要访问它的父节点(例如——map上的生物需要能够访问map数据——因此他们的父节点的数据。拥有的方向当然是map拥有它的存在,因此持有指向它们的共享指针。然而,为了从一个存在中访问map数据,我们需要一个指向父级的指针——智能指针的方式是使用一个引用,即weak_ptr。但是,我曾经读到锁定weak_ptr是一项昂贵的操作——也许这不再是真的了——但考虑到weak_ptr会经常被锁定,我担心这种设计注定性能不佳。因此问题:锁

c++ - 等式比较 std::weak_ptr

我想比较两个std::weak_ptr或一个std::weak_ptr和一个std::shared_ptr是否相等。我想知道的是每个weak_ptr/shared_ptr指向的对象是否相同。不仅如果地址不匹配,而且如果底层对象被删除然后偶然用相同的地址重建,则比较应该会产生负面结果。所以基本上,即使分配器保留相同的地址,我也希望这个断言成立:autos1=std::make_shared(43);std::weak_ptrw1(s1);s1.reset();autos2=std::make_shared(41);std::weak_ptrw2(s2);assert(!equals(w1

c++ - 等式比较 std::weak_ptr

我想比较两个std::weak_ptr或一个std::weak_ptr和一个std::shared_ptr是否相等。我想知道的是每个weak_ptr/shared_ptr指向的对象是否相同。不仅如果地址不匹配,而且如果底层对象被删除然后偶然用相同的地址重建,则比较应该会产生负面结果。所以基本上,即使分配器保留相同的地址,我也希望这个断言成立:autos1=std::make_shared(43);std::weak_ptrw1(s1);s1.reset();autos2=std::make_shared(41);std::weak_ptrw2(s2);assert(!equals(w1

c++ - shared_ptr 和 weak_ptr 失败的小例子

我在使用shared_ptr时遇到问题和weak_ptr连同enable_shared_from_this.当我用谷歌搜索我所看到的症状时,每个人都建议“当没有shared_from_this()实例拥有你的对象时,你不能使用shared_ptr。但这不是我的情况。考虑这段代码:#include#includeclassMyClass:std::enable_shared_from_this{public:voidthis_fails(){//Doesn'tevenassert(),becauseitthrowsbad_weak_ptrassert(shared_from_this()

c++ - shared_ptr 和 weak_ptr 失败的小例子

我在使用shared_ptr时遇到问题和weak_ptr连同enable_shared_from_this.当我用谷歌搜索我所看到的症状时,每个人都建议“当没有shared_from_this()实例拥有你的对象时,你不能使用shared_ptr。但这不是我的情况。考虑这段代码:#include#includeclassMyClass:std::enable_shared_from_this{public:voidthis_fails(){//Doesn'tevenassert(),becauseitthrowsbad_weak_ptrassert(shared_from_this()

c++ - shared_from_this 导致 bad_weak_ptr

我正在尝试在asio中保留已连接客户端的列表。我已经从文档(http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp03/chat/chat_server.cpp)中改编了聊天服务器示例,这是我最终得到的重要部分:#include#include#include#include#include#includeusingboost::asio::ip::tcp;classtcp_connection;std::set>clients;voidadd_client(boost::shared_ptrclient

c++ - shared_from_this 导致 bad_weak_ptr

我正在尝试在asio中保留已连接客户端的列表。我已经从文档(http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp03/chat/chat_server.cpp)中改编了聊天服务器示例,这是我最终得到的重要部分:#include#include#include#include#include#includeusingboost::asio::ip::tcp;classtcp_connection;std::set>clients;voidadd_client(boost::shared_ptrclient