我想在线程之间共享数据,并在最后一个用户完成后自动删除它。在大多数情况下,这似乎boost::interprocess::shared_ptr
在一个boost::fixed_managed_shared_memory
段中使用:但并非总是如此。
那么,boost::interprocess::shared_ptr
线程(和进程间)是否安全?
如果我在固定地址使用我的共享内存(我很确定这在我的 64 位(嗯,48 位)地址空间中会没问题),是否可以使用普通的boost::shared_ptr
(它们是线程安全)而不是?
一些澄清:
我使用的指针类型是 plain void*
,(我的共享内存映射到一个固定地址)。
线程安全的问题与引用计数有关——即,是否允许同时在不同进程中复制/销毁指向同一事物的共享指针。在不同的线程中不能访问同一个共享指针,也不能访问被指针。