Reforçar a fila de mensagens não baseada na fila de mensagens POSIX? Impossível selecionar (2)?
Eu pensei em usar o Boost.InterprocessFila de Mensagens no lugar de soquetes para comunicação dentro de um host. Mas, após investigá-lo, parece que, por algum motivo, essa biblioteca evita o recurso da fila de mensagens POSIX (suportada pelo meu sistema Linux) e, em vez disso, é implementada sobre a memória compartilhada do POSIX. A interface é semelhante o suficiente para você não adivinhar isso imediatamente, mas parece ser o caso.
A desvantagem para mim é que a memória compartilhada obtida viashm_open(3)
parece não ser utilizável comselect(2)
, em oposição às filas de mensagens POSIX obtidas por meio demq_open(3)
.
Parece que a biblioteca do Boost perde nesse caso. Alguém entende por que isso deveria ser? Mesmo que as filas de mensagens POSIX estejam disponíveis apenas em alguns sistemas, seria de esperar que o Boost usasse esse recurso onde estivesse disponível e o reimplementasse apenas quando necessário. Existe alguma armadilha do sistema POSIX que ainda não reconheço?