Как я могу создать таблицу типа apr_table_t в сегменте разделяемой памяти? - PullRequest
0 голосов
/ 31 марта 2010

Как мне создать таблицу типа apr_table_t в сегменте разделяемой памяти?

Ответы [ 2 ]

1 голос
/ 12 января 2012

Нет способа создать это, кроме написания собственной реализации. Обратите внимание, что вы должны заранее определить максимальный объем памяти, который займет ваша хеш-таблица, поскольку APR не поддерживает изменение размеров сегментов общей памяти. Однако вы можете использовать библиотеку APR DBM для создания поточно-ориентированной файловой базы данных на основе хеш-таблицы, она довольно быстрая и простая в использовании.

0 голосов
/ 06 мая 2010

Это может быть невозможно, если общая память не сопоставлена ​​с одним и тем же виртуальным адресом.

Документация для функции apr_shm_baseaddr_get гласит:

Получить базовый адрес сегмент разделяемой памяти. ПРИМЕЧАНИЕ: это адрес доступен только в пределах вызывающее пространство адресов, так как этот API не гарантирует, что другие прикрепление процессов будет поддерживать сопоставление того же адреса.

APR apr_shm_baseaddr_get документация

Внутренне структура apr_table_t использует apr_array_header_t, который содержит указатели на apr_pool_t и char (элементы массива).

...