使用Boost IPC synch和共享向量进行同步

时间:2014-04-03 05:14:30

标签: c++ boost vector synchronization ipc

我希望在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;
}

我添加了一些代码,并尝试将问题更好地排序。 请建议。

0 个答案:

没有答案