相关疑难解决方法(0)

Disruptor.NET示例

我正在尝试学习如何使用Disruptor.NET消息框架,我找不到任何实际的例子.有很多文章都有关于它是如何工作的图片,但我找不到任何实际的内容,并向您展示如何实现这些方法.什么是一个例子?

c# disruptor-pattern

24
推荐指数
1
解决办法
1万
查看次数

我应该同步对干扰器 Next/Publish 方法的访问吗?

我没有提供完整的列表,因为下面的代码对于那些熟悉 Disruptor 的人来说已经足够了。问题是调用NextPublish方法是否是线程安全的。下面的例子中哪一个是正确的?请注意,Attach可以同时从不同线程调用。我有多个消费者。

例1. 锁定一切:

    private object attachLock = new object();

    // can be called from parallel threads
    public void Attach(OrdersExecutor oe)
    {
        lock (attachLock)
        {
            long sequenceNo = ringBuffer.Next();
            ringBuffer[sequenceNo].Value = oe;
            ringBuffer.Publish(sequenceNo);
        }
    }
Run Code Online (Sandbox Code Playgroud)

例2. 锁定下一个:

    private object attachLock = new object();

    // can be called from parallel threads
    public void Attach(OrdersExecutor oe)
    {
        long sequenceNo;
        lock (attachLock)
        {
            sequenceNo = ringBuffer.Next();
        }
        ringBuffer[sequenceNo].Value = oe;
        ringBuffer.Publish(sequenceNo);
    }
Run Code Online (Sandbox Code Playgroud)

例3. 无锁

    private object …
Run Code Online (Sandbox Code Playgroud)

c# disruptor-pattern

2
推荐指数
1
解决办法
1029
查看次数

标签 统计

c# ×2

disruptor-pattern ×2