gpt4 book ai didi

java - LMAX Disruptor 事件中的类字段是否需要可变?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:08 30 4
gpt4 key购买 nike

LMAX Disruptor“入门”中的示例代码...

public class LongEvent
{
private long value;

public void set(long value)
{
this.value = value;
}
}

引用:https://github.com/LMAX-Exchange/disruptor/wiki/Getting-Started

为什么 private long value 没有声明为 volatile

我问是因为,对于 Disruptor 模式来说,数据是在线程之间共享的(生产者 -> 消费者)。

我的猜测:生产者线程和消费者线程之间已经(至少)存在一个内存栅栏。

最佳答案

Peter 的评论提供了一个很好的线索,事实上,是的,其中涉及内存栅栏。

可以看到Sequence类中使用了一个putOrderedLong() compareAndSet()等。每一个都强制执行内存排序。

参见 source code了解更多详情。

关于java - LMAX Disruptor 事件中的类字段是否需要可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34706920/

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