1

共有メモリのチャンク内に整列されたメモリブロックを割り当てるために使用する場合allocate_aligned、別のプロセスで同じブロックを識別するにはどうすればよいですか?例えば

managed_shared_memory managed_shm(open_or_create, "SharedMemory", 65536);
void *ptr = managed_shm.allocate_aligned(256, 16);

ptr次に、別のプロセス内からどのように見つけるのですか?

整列されていない割り当ての場合、私はただ使用find_or_constructしますが、明らかに、別のプロセスから割り当てを見つけることを可能にする割り当てに関連付けられた名前があります。ただし、調整された割り当てを行う方法はないようでfind_or_constructあり、明らかに、匿名の割り当てを識別する方法に関するいくつかの基本的なポイントを見逃しているに違いありません。

4

1 に答える 1

1

以下に含まれるドキュメントからの例。これは、メモリに返されるallocate_alignedメソッドおよびバニラallocateメソッドへのポインタに適用できます。

//Process A obtains the offset of the address
managed_shared_memory::handle handle = 
   segment.get_handle_from_address(processA_address);

//Process A sends this address using any mechanism to process B

//Process B obtains the handle and transforms it again to an address
managed_shared_memory::handle handle = ...
void * processB_address = segment.get_address_from_handle(handle)
于 2012-11-16T18:20:06.160 に答える