我希望在vector
中共享shared memory
,以便在整个流程中使用它。但是,我没有提出任何synchronization
,这造成了某些问题。
为了创建这个共享向量,我遵循了Boost文档中给出的步骤,即,我为此向量创建了一个memory allocator
,并相应地映射了向量。
然而,现在,我希望与矢量同步。查看Boost IPC synchronization
的示例,它们显示了一个结构,具有信号量,以及它想要共享的数组,然后将此结构映射到共享内存。
现在,如果我必须对现有代码进行调整,我应该将vector
包含在这样的structure
中,然后将structure
映射到{{1} }}?我应该有一个不同的shared memory
,而不需要使用现有的allocator
vector
?这会有用吗?
这与以下问题有关: Undefined vector behaviour, 我早些时候曾问过。
修改
一些代码: (在这段代码中,我正在共享一个数组,而不是向量,因为使用会很好。我已经将mutex放入结构中,然后尝试在内存中共享结构,但它尝试让互斥锁等待时,给出未处理的访问冲突错误。)
srvCheck.h
allocator
srvCheck.cpp
typedef struct
{
TCHAR name[100];
DWORD someVariable;
} SERVER_INFO_TYPE;
struct sync_semaphore
{
sync_semaphore() :
mutex(1), nEmpty(0), nStored(0)
{}
boost::interprocess::interprocess_semaphore mutex, nEmpty, nStored;
SERVER_INFO_TPYE arrayName[64];
int varName;
}
class someClass
{
public :
someclass()
someFunc();
private:
sync_semaphore * data;
void * addr;
}
我添加了一些代码,并尝试将问题更好地排序。 请建议。