使用boost named_semaphore的代码中的错误

时间:2011-03-09 18:28:56

标签: c++ boost semaphore interprocess

我会在共享内存中保留一些数据,使用命名信号量来管理访问:

#include <boost/interprocess/sync/named_semaphore.hpp>

struct shared_memory_buffer
{
    // Application data
    int  items[10];

    // Synchronization data
    boost::interprocess::named_semaphore  syncSem;

    shared_memory_buffer()
    : syncSem(boost::interprocess::open_or_create_t, "testSemaphore", 0)   // error
    {}
};

但是我在指定的行收到以下编译时错误:

error: expected primary-expression before ‘,’ token

这是我的系统:

MacOS X 10.6

i686-apple-darwin10-g ++ - 4.2.1(GCC)4.2.1(Apple Inc. build 5664)

提升1.44

谢谢!

1 个答案:

答案 0 :(得分:6)

boost::interprocess::open_or_create_t是一种类型 - 您可能希望传递boost::interprocess::open_or_create,当然这是 open_or_create_t的实例。记录在案here