Problema Criando um buffer circular em memória compartilhada usando Boost
-
22-09-2019 - |
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
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?