首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Disruptor.NET示例

Disruptor.NET示例
EN

Stack Overflow用户
提问于 2012-01-14 14:52:04
回答 2查看 13.6K关注 0票数 25

我正在尝试学习如何使用Disruptor.NET消息传递框架,但我找不到任何实际的示例。有相当多的文章是关于它是如何工作的,但我找不到任何实际去向你展示如何实现这些方法的文章。举个例子吧?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-03 00:42:27

沮丧的是,我无法为Disruptor-net找到一个可行的'Hello World‘,我一直在胡乱摆弄,直到我找到了一个可以工作的--见下文。希望它是不言自明的。Console.WriteLine行便于查看操作方式-例如,RingBuffer在启动时创建每个entry实例(这是有意义的)。

希望这篇文章能帮助任何在.NET上寻求中断程序帮助的人。

代码语言:javascript
复制
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Disruptor;
using Disruptor.Dsl;

namespace DisruptorTest
{
    public sealed class ValueEntry
    {
        public long Value { get; set; }

        public ValueEntry()
        {
            Console.WriteLine("New ValueEntry created");
        }
    }

    public class ValueAdditionHandler : IEventHandler<ValueEntry>
    {
        public void OnNext(ValueEntry data, long sequence, bool endOfBatch)
        {
            Console.WriteLine("Event handled: Value = {0} (processed event {1}", data.Value, sequence);
        }
    }

    class Program
    {
        private static readonly Random _random = new Random();
        private static readonly int _ringSize = 16;  // Must be multiple of 2

        static void Main(string[] args)
        {
            var disruptor = new Disruptor.Dsl.Disruptor<ValueEntry>(() => new ValueEntry(), _ringSize, TaskScheduler.Default);

            disruptor.HandleEventsWith(new ValueAdditionHandler());

            var ringBuffer = disruptor.Start();

            while (true)
            {
                long sequenceNo = ringBuffer.Next();

                ValueEntry entry = ringBuffer[sequenceNo];

                entry.Value = _random.Next();

                ringBuffer.Publish(sequenceNo);

                Console.WriteLine("Published entry {0}, value {1}", sequenceNo, entry.Value);

                Thread.Sleep(250);
            }
        }
    }
}
票数 32
EN

Stack Overflow用户

发布于 2012-11-27 21:12:01

有一篇关于中断模式的详细博客文章。它详细演示了如何开始和使用Disruptor。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8860684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档