不安全、超快的跨进程内存缓冲区?
跨进程内存缓冲区总是有一些开销,我的理解是这是相当高的。但是,如果您正在实现跨进程渲染缓冲区,这并不像其他数据那样至关重要,因此我们可以使用哪些技术来从多个进程获取对内存块的“原始”访问,没有安全网,除了它不会崩溃?或者现代操作系统根本无法以某种方式使用非抽象内存来实现这一点……在过去,您不能获得指向内存中任何位置的指针吗?
我正在使用 C++ 工作,但问题适用于 Win XP/Vista/7、MacOSX 10.5+(& Linux 不太重要)。
Cross-process memory buffers always have some overhead, and my understanding is this is quite high. But what if you're implementing a cross-process render-buffer, this isn't critically important in the same way as other data, so are there techniques we can use to get 'raw' access to a chunk of memory from multiple processes, with no safety nets apart from it not crashing? Or do modern operating systems simply not work with unabstracted memory in a way to make this possible... in the old days couldn't you get a pointer to ANY place in memory?
I'm working in C++ but the question applies to Win XP/Vista/7, MacOSX 10.5+ (& Linux less importantly).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
内存映射文件就是解决这个问题的方法。
Windows:
CreateFileMapping()
(
CreateFileMapping() 的示例
&MapViewOfFile()
)POSIX:
mmap()
Memory mapped files are the way to go here.
Windows:
CreateFileMapping()
(example of
CreateFileMapping()
&MapViewOfFile()
)POSIX:
mmap()