我正在使用boost::interprocess::managed_shared_memory
来创建跨进程共享的内存。
以下是采取的步骤:
步骤
a) Create memory.
步骤
a) Open memory.
b) Write to memory
步骤
a) Open memory.
b) Read from memory.
c) Open memory.
d) Read from memory.
e) Open memory.
f) Read from memory.
g) ...... and so on and so forth!
现在,问题是,在步骤3中,我在阅读之前一次又一次打开内存!我认为这是多余的行为。
如何只打开一次才能读取多次?
实际上,open命令在性能方面非常昂贵,这在我的应用程序中被证明是一个瓶颈。
答案 0 :(得分:5)
这个想法应该是只打开一次共享资源(在这种情况下为内存),然后重复使用相同的句柄/变量/对象来一次又一次地对其进行评估。
以下任何一种方法均可:
{ }
中,以确保函数范围内的本地范围。或者,可以将其另存为指针,并在工作流涉及调用使用共享资源的几种方法的情况下传递给函数。
答案 1 :(得分:1)
为简洁起见,许多示例在main函数中都有managed_shared_memory。
但是,您应该使其成为相关类的成员(负责管理共享内存映射的生命周期)。
当然,您可以将它保存为main中的局部变量,但是您必须在任何函数调用中继续传递它。 (我 NOT 建议把它变成一个全局变量。或者就此而言是单身人士。)