【问题标题】:Memory Mapped Stream - Wait for data to arrive内存映射流 - 等待数据到达
【发布时间】:2017-02-22 17:47:10
【问题描述】:

我试图让应用程序 A 将一个字节数组写入内存映射流,然后应用程序 B 读取这块内存。我已经到了他们可以读写的地步,但问题是我无法让应用程序 B 等待新数据到达,现在它只是尽可能快地读取。

经过一番搜索后,我发现您可以为MemoryMappedStream.BeginRead 分配回调,但我不确定如何使用此回调来等待来自流的新数据。对于这种情况如何进行回调?还是我看错了方向?

【问题讨论】:

  • stackoverflow.com/questions/30251443/… 可能会对您有所帮助。
  • 你可以使用一个名为EventWaitHandle 的信号给消费线程,告诉它数据何时被完全写入。 (您可能还需要另一个 EventWaitHandle 用于消费线程,以向生产线程表明它已经消费了数据)
  • @MatthewWatson 绝对看起来很有趣,谢谢你的建议。

标签: c# callback stream shared-memory memory-mapped-files


【解决方案1】:

感谢 MatthewWatson,我调查了 EvenWaitHandles,并设法使用两个 AutoResetEvents 让进程等待彼此的信号。其中一个用于在执行读取时设置MemoryReadEventWaitHandle,另一个用于在写入完成时设置MemoryWrittenEventWaitHandle。这样他们就不会互相干扰,并以正确的顺序执行任务。

【讨论】:

    猜你喜欢
    • 2021-03-06
    • 2021-05-08
    • 2023-03-26
    • 2021-01-01
    • 2014-06-11
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多