Я хочу обмениваться данными между потоками и автоматически удалять их, когда последний пользователь закончит с ними . Похоже, что в большинстве случаев это работает, используя boost :: interprocess :: shared_ptr
в сегменте boost :: fixed_managed_shared_memory
: но не всегда.
Итак, это ]увеличение:: interprocess :: shared_ptr
thread (and interprocess) -safe?
Если я использую свою разделяемую память по фиксированному адресу (я почти уверен, что это будет нормально в моем 64-битном (ну, 48-битное адресное пространство), можно ли вместо этого использовать обычный boost :: shared_ptr
(который является потокобезопасным)?
некоторые пояснения:
Тип указателя, который я использую, простой void *
, (моя общая память сопоставлена с фиксированным адресом).
Вопрос безопасности потоков заключается в счетчике ссылок, то есть, копирование / уничтожение общих указателей на одно и то же в разных процессах в то же время разрешено. Не доступ к одному и тому же общему указателю в разных потоках, и не доступ к указателю.