gpt4 book ai didi

c++ - C++父子进程共享队列

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:47 25 4
gpt4 key购买 nike

我知道有很多方法可以处理两个进程之间的相互通信,但我仍然对如何处理它感到困惑。是否可以有效地在两个进程之间共享队列(来自标准库)?

谢谢

最佳答案

我相信您的困惑来自于不了解父进程和子进程的内存地址空间之间的关系。这两个地址空间实际上是无关的。是的,紧接在 fork() 之后,这两个进程包含几乎相同的内存拷贝,但您应该将它们视为拷贝。一个进程对其地址空间中的内存所做的任何更改都不会影响另一个进程的内存。

任何“普通的旧数据结构”(例如 C++ 标准库提供的)都是纯粹的内存抽象,因此无法使用它们在两个进程之间进行通信。要将数据从一个进程发送到另一个进程,您必须使用提供进程间通信的多个系统调用之一。

但是,请注意共享内存是一个异常(exception)。您可以使用系统调用设置一段共享内存,然后在共享内存中创建数据结构。您仍然需要使用互斥量来保护这些数据结构,但互斥量必须是共享内存感知的。对于 Posix 线程,您将使用带有 PTHREAD_PROCESS_SHARED 属性的 pthread_mutexattr_init。

关于c++ - C++父子进程共享队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233708/

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