gpt4 book ai didi

winapi - Windows 中的进程间共享内存是否一致?

转载 作者:行者123 更新时间:2023-12-01 11:27:55 24 4
gpt4 key购买 nike

我需要在同一台机器上的两个进程之间进行一些高比特率的流传输。为了避免过度复制,我的想法是分配一个包含实际数据的大型共享内存缓冲区(通过 CreateFileMapping),并使用管道来控制消息。

这个想法是生产者将一块数据写入共享内存,然后通过管道发送一条消息,有效地将所有权传递给消费者。消费者直接在共享内存上执行其业务,然后发送另一条消息将内存释放回生产者。无限重复。

这种同步机制是否保证在内存一致性方面是安全的?即,消费者在收到控制消息后是否能保证看到生产者写入的完整效果?

最佳答案

出于实际目的,跨进程共享内存与单个进程的两个线程共享的普通内存具有相同的属性。也就是说,理论上你需要一个内存栅栏/屏障。我怀疑在实践中 IPC 控制消息就足够了。

在 CPU 级别,共享内存在两个进程中是物理上相同的 RAM。这只是在相应的页表中具有兼容的虚拟到物理映射的问题。

关于winapi - Windows 中的进程间共享内存是否一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35730661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com