当前位置: 首页 > 网络应用技术

朗德原理

时间:2023-03-06 13:19:57 网络应用技术

  Atomiclong具有内部变量值节省实际的长度值,所有操作均用于变量。换句话说,在高并发环境中,值变量实际上是一个热点,即竞争N线程的热点。Longadder的基本思想是分散热门,将价值分散到阵列中。不同的线程将击中阵列中的不同凹槽。每个线程仅执行自己插槽的值的值。这个热点将被分散。冲突是冲突。概率要小得多,如果您想获得一个真正的长值,只需返回每个插槽中的变量值即可。

  Longadder内部有一个基本变量,一个单元格阵列:

  定义内部单元格。这就是我们之前提到的。每个单元对象都有一个值值。您可以使用不安全操作其价值:

  Longadder #ADD方法的逻辑如下:

  只有当并发之间永远不会发生冲突时,将使用基础基础。一旦发生并发冲突,所有操作都仅用于单元格中的单元格。如果单元格[]初始化但冲突发生在单元单元中,则父类也称为父类。目前]扩展。这也是Longadder设计的微妙之处:尝试最大程度地减少热冲突,最后,您必须尽可能延迟CAS操作。

  整个条纹64#longAccumulating如下:

  由于计算计算总和时,单元格数组中没有锁定,因此在累积过程中可能还有其他线程可以修改单元格中的值,并且也可能会扩展数组。因此,按和返回的值不是很准确。返回值在调用sum方法时不是原子快速值。

  longAccumulator是LongAdder的增强版本。longadder只能对数值执行加法和减法,而longAccumulator则提供自定义功能操作。构造函数函数如下:通过LongbinaryOperator,您可以自定义任意操作以输入参数,并返回参数结果(longbinaryoperator要接收2个参数并返回1个长度)。长含量污染器的内部原理几乎与longadder相同。他们使用父条纹64的长流质方法。

  原始:https://juejin.cn/post/7103872764984950797