进程间通信堆内存
Interprocess communication heap memory
堆内存可以在两个不同的进程之间共享吗?在 boost 进程间文档中,有一条语句指出托管堆内存不会创建系统范围的资源
在进程之间共享内存的C++标准中没有预见到任何内容。 事实上,每个进程都在自己的地址空间中运行,并在该地址空间中管理其动态内存,因此无法共享"堆"。
但是,操作系统为您提供了一些在进程之间共享内存的方法。 最广为人知的方法是使用内存映射文件,这些文件在广泛的操作系统中受支持,但以操作系统特定的方式,因此不可移植。boost提出了一个隐藏操作系统特定部分的可移植实现。
您很可能会将以这种方式获得的内存区域用于对象。 您可以使用放置 new 来实例化对象。 您甚至可以创建自定义分配器以在此内存区域中创建动态对象。
但是,这需要格外小心,因为您必须考虑 IPC 同步以避免争用,并且您需要记住,一个进程创建的任何指针对于另一个进程都是垃圾(因为它在独立的地址空间中运行(。
相关文章:
- 进程间通信堆内存
- Win32 进程间通信分配
- Electron应用程序和Win32本机桌面应用程序之间的进程间通信
- 进程间通信 - C# 和C++.对路径的访问被拒绝
- 基于pthread_mutex的进程间通信不起作用
- Python和C++之间使用本地文件套接字的进程间通信
- 如何在进程间通信中获取其他终结点的进程 ID
- 使用物理文本文件的进程间通信
- Mac 上高带宽数据流最有效的进程间通信方法是什么?
- 进程间通信 -- 在共享内存中锁定互斥体
- 进程间通信 CUDA
- 使用COM在Windows上的本地计算机上进行进程间通信
- 具有进程间通信功能的服务器-客户端日志记录体系结构.你知道解决方案吗?
- 是否有在C++和Javascript中实现的高级进程间通信API
- 在 Windows 上的 C++ 中实现强大、简单(且快速)的进程间通信
- Boost::asio,共享内存和进程间通信
- DBus和其他进程间通信方法的区别
- Mac OS X等效于CreateEvent(),带有用于进程间通信的命名对象
- 32位- 64位进程间通信
- 共享内存进程间通信