草庐IT

compare_exchange_weak

全部标签

c++ - weak_ptr 是如何工作的?

我了解如何使用weak_ptr和shared_ptr。通过计算对象中的引用数,我了解shared_ptr的工作原理。weak_ptr是如何工作的?我尝试通读boost源代码,但我对boost不够熟悉,无法理解它使用的所有东西。谢谢。 最佳答案 shared_ptr使用额外的“计数器”对象(又名“共享计数”或“控制block”)来存储引用计数。(顺便说一句:那个“计数器”对象也存储了删除器。)每个shared_ptr和weak_ptr都包含一个指向实际指针对象的指针,以及一个指向“计数器”对象的第二个指针。为了实现weak_ptr,“

java - 如何使用 Comparator 定义自定义排序顺序?

我想为汽车列表开发一个排序演示。我正在使用数据表来显示汽车列表。现在实际上我想按汽车颜色对列表进行排序。这里不是按字母顺序排序的。我想使用我的自定义排序顺序,比如先红车,然后是蓝车,等等。为此,我尝试使用JavaComparator和Comparable但它只允许按字母顺序排序。那么,任何人都可以指导我实现使用该技术的方法,以便排序变得更快。classCarimplementsComparable{privateStringname;privateStringcolor;publicCar(Stringname,Stringcolor){this.name=name;this.colo

java - Comparator.reversed() 不使用 lambda 编译

我有一个包含一些用户对象的列表,我正在尝试对列表进行排序,但只能使用方法引用,使用lambda表达式编译器会给出错误:ListuserList=Arrays.asList(u1,u2,u3);userList.sort(Comparator.comparing(u->u.getName()));//worksuserList.sort(Comparator.comparing(User::getName).reversed());//worksuserList.sort(Comparator.comparing(u->u.getName()).reversed());//Compile

java - 为什么 java.lang.Number 不实现 Comparable?

这个问题在这里已经有了答案:ComparingthevaluesoftwogenericNumbers(12个回答)关闭5年前。有谁知道为什么java.lang.Number没有实现Comparable?这意味着您不能使用Collections.sort对Number进行排序,这在我看来有点奇怪。发布讨论更新:感谢所有有用的回复。我最终做了somemoreresearchaboutthistopic.为什么java.lang.Number没有实现Comparable最简单的解释是出于对可变性的担忧。回顾一下,java.lang.Number是AtomicInteger、AtomicLo

java : Comparable vs Comparator

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicates:differencebetweencompare()andcompareTo()Java:WhatisthedifferencebetweenimplementingComparableandComparator?Comparable和Comparator之间的主要区别是什么。在什么情况下哪个比另一个更受欢迎?谢谢已更新-与示例的良好链接!!http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html

java - 如何在 Java 中使用 Comparator 进行排序

我学会了如何使用比较器,但我在使用比较器时遇到了困难。我的代码有错误:Exceptioninthread"main"java.lang.ClassCastException:New.Peoplecannotbecasttojava.lang.Comparableatjava.util.Arrays.mergeSort(UnknownSource)atjava.util.Arrays.sort(UnknownSource)atjava.util.Collections.sort(UnknownSource)atNew.TestPeople.main(TestPeople.java:18)

c++ - shared_ptr 和 weak_ptr 的区别

我正在阅读ScottMeyers“EffectiveC++”一书。有人提到有tr1::shared_ptr和tr1::weak_ptr就像内置指针一样,但它们会跟踪有多少tr1::shared_ptr指向一个对象。这称为引用计数。这可以很好地防止非循环数据结构中的资源泄漏,但是如果两个或多个对象包含tr1::shared_ptrs从而形成一个循环,则该循环可能会使彼此的引用计数保持在零以上,即使当所有指向循环的外部指针都已被销毁。这就是tr1::weak_ptrs的用武之地。我的问题是循环数据结构如何使引用计数高于零。我请求一个示例C++程序。weak_ptrs是如何解决问题的?(再次

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.

c++ - 为什么 string::compare 返回一个 int?

为什么string::compare返回一个int而不是像short或char这样的较小类型?我的理解是这个方法只返回-1、0或1。第二部分,如果我要设计一个比较方法来比较两个Foo类型的对象并且我只想返回-1、0或1,我会使用short或char通常是个好主意?编辑:我已得到更正,string::compare不返回-1、0或1,它实际上返回值>0、似乎答案是粗略的,没有理由返回小于int的类型,因为返回值是“右值”,而那些“右值”不会因小于类型而受益整数(4个字节)。此外,许多人指出,大多数系统的寄存器可能都会有int的大小,因为无论你给它们一个1、2还是4字节的值,这些寄存器都会

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.