gpt4 book ai didi

c++ - 跨进程互斥读/写锁定

转载 作者:行者123 更新时间:2023-11-28 04:55:16 24 4
gpt4 key购买 nike

我正在尝试在 Windows 环境下使用 C/C++ 进行进程间通信。

我正在创建一个共享内存页面文件,两个进程获取该文件的句柄。是这样的:

进程1:初始化共享内存区。等待 Process2 填充它。

进程 2:获取共享内存区域的句柄。把东西放进去。

我也在 process1 中创建一个命名的互斥量。现在 process1 在创建互斥锁后很快就获得了它的所有权(使用 WaitSingleObject)。显然,内存区中没有任何东西,所以我需要释放互斥量。现在我需要等到内存被填满,而不是再次尝试获取互斥量。

我在考虑条件变量。 Process2一旦填满内存区域就向条件变量发出信号,process1将立即获取信息。

但是,根据关于条件变量的 MS 文档,它们不会跨进程共享,这从它们的初始化中就可以清楚地看出,因为它们没有命名

此外,共享内存区域在任何给定时刻最多可以容纳一个元素,这意味着 process2 在填充后无法重新填充,除非 process1 提取其信息。

从给定的描述中可以清楚地看出,条件变量最适合此目的(或监视器)。那么有解决办法吗?

最佳答案

条件变量可以在流程中使用,但不能跨流程使用。

尝试使用 PIPE_ACCESS_DUPLEX 作为开放模式的 NamedPipe。这样您就可以从两个过程中选择通信选项。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365150(v=vs.85).aspx

关于c++ - 跨进程互斥读/写锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270926/

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