Pergunta

Estou tentando criar um buffer circular em memória compartilhada usando o Boost circular_buffer e bibliotecas de interprocessos. Eu compilei e executei o exemplo dado no Documentação de interprocesso Para criar um vetor na memória compartilhada sem nenhum problema. No entanto, quando o modifico para usar o Boost Circular_Buffer como:

int main(int argc, char *argv[])
{
    managed_shared_memory segment(create_only, "MySharedMemory", 65536);
    const ShmemAllocator alloc_inst (segment.get_segment_manager());
    MyCircBuffer  *myCircBuf  = segment.construct<MyCircBuffer>("MyCircBuffer")(alloc_inst);
    return 0;
} 

Eu recebo um erro de compilação (causado por segment.construct()). Alguma ideia do que estou fazendo de errado? É porque circular_buffer não é um dos recipientes listados em /boost/interprocess/containers, ou seja, não é compatível com o interprocesso?

Obrigado,

C

Foi útil?

Solução

Fiz a mesma pergunta no fórum do usuário do Boost e a solução sugerida foi usar -dboost_cb_disable_debug ou -dndebug sinalizadores, já que circular_buffer depende de indicadores crus para suporte de depuração.

Alguma outra sugestão?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top