是否有一种标准方法可用于重复并行事件流?在我尝试重新发明轮子之前,我想知道这个问题是否有一些已知的方法。
我的客户端组件将与两台服务器通信。每个人都提供近乎实时的事件流(约1秒)。这些事件有时可能会发生故障。假设我可以唯一地识别事件。我需要以相同的近实时性能向消费代码发送单个事件流。
答案 0 :(得分:1)
关于这类问题已经写了很多。这是Leslie Lamport撰写的一篇基础论文:
http://research.microsoft.com/en-us/um/people/lamport/pubs/pubs.html#time-clocks
关于操作转换理论的维基百科文章是进一步研究的一个非常好的起点:
http://en.wikipedia.org/wiki/Operational_transformation
至于你的问题,你必须选择一些任意权重来衡量延迟成本与掉落事件的成本。您可以维护两个优先级队列,按时间顺序排列,传入事件的位置。你会在两个队列的头部进行合并 - 并且有一些延迟(允许无序事件),并丢弃在你上次发送的任何事件的时间戳之前发生的事件。如果那不比你已经想到的更好,那么,至少你可以阅读那篇很酷的Lamport纸!
答案 1 :(得分:1)
我认为优化可能是特定于操作系统的。从您描述的任务开始,我考虑两个线程消耗传入数据并将其附加到具有基于互斥锁的访问权限的公共流。 Linux和Win32都有类似互斥锁的程序,但如果数据速率非常好,它们的性能可能会很慢。在这种情况下,我将按数据块操作,这将允许不经常使用互斥锁。当然有一个主线程消耗数据,它也使用互斥锁访问它。