Как выровнять память по строке кэша с помощью Boost Interprocess Shared MemoryC++

Программы на C++. Форум разработчиков
Anonymous
Как выровнять память по строке кэша с помощью Boost Interprocess Shared Memory

Сообщение Anonymous »

Я пишу код Boost.Interprocess для общей памяти между двумя процессами. Я использую Managed_shared_memory. Я инициализирую память с помощью boost::interprocess::open_or_create и выделяю в ней память с помощью find_or_construct, вот так:

Код: Выделить всё

auto data_ptr = segment.find_or_construct("data")[max_elements]();
Я использую find_or_construct, чтобы один процесс инициализировал память, а другой процесс получал структуру данных. Все это атомарно.
Я хочу убедиться, что data_ptr выровнен по строке кэша, то есть он должен начинаться с адреса, кратного 64 байтам (в моей системе). Как мне добиться такого выравнивания?
Дополнительная информация:
Размер строки системного кэша составляет 64 байта.
Я использую Boost.Interprocess для управления общей памятью.
Я просмотрел документацию Boost.Interprocess, но не смог найти прямого способа указать выравнивание памяти для find_or_construct. Будет очень полезно, если я смогу найти другой способ выравнивания памяти с помощью Boost и гарантировать, что один процесс инициализирует память, в то время как другой процесс получает структуру данных, без каких-либо проблем с синхронизацией.

Подробнее здесь: https://stackoverflow.com/questions/787 ... red-memory

Вернуться в «C++»