【问题标题】:What are high performance alternatives to LMAX disruptor queues?LMAX 中断队列的高性能替代方案是什么?
【发布时间】:2012-07-11 22:45:18
【问题描述】:

我正在对 Disruptor Queues 的内部 C 实现进行性能测试,我很想对非线程事件流处理的其他类似方法进行基准测试。 Google 上的内容很少,因此非常感谢任何指针或建议。

【问题讨论】:

  • “非线程事件流处理”是什么意思?
  • 抱歉耽搁了!大多数情况下,我的意思是我对非线程解决方案(例如分叉、锁等)感兴趣,比如 Disruptor Queues 或其他完全不同的方法。
  • @johnzachary 分叉、锁等暗示你是多线程的。如果没有线程,这些功能实际上将毫无用处。我相信您的意思是非阻塞,而不是单线程。如果使用得当,破坏者是一个非常强大的系统。

标签: c concurrency disruptor-pattern


【解决方案1】:

这里有一个C实现:

https://github.com/colding/disruptorC

请注意 README 中有关性能的说明。

【讨论】:

    【解决方案2】:

    具有 C++ 源的队列目录可以移植到 C):

    http://www.1024cores.net/home/lock-free-algorithms/queues/queue-catalog

    已经将其中一个移植到 Scala 并获得比标准 java.util.concurrent.ConcurrentLinkedQueue 更好的延迟和吞吐量:

    https://github.com/plokhotnyuk/actors/blob/c92576e3b200180ee1c8ea521fb668c538f125ab/src/main/scala/com/github/plokhotnyuk/actors/MPSCQueue.scala

    【讨论】:

    • 谢谢。这是一个有趣的项目。
    【解决方案3】:

    我会检查 ØMQ 并使用他们的线程间通信传输 zmq_inproc,而不是 PUSH/PULL sockets。通信是单向的,但却是最快的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 2021-11-13
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      相关资源
      最近更新 更多