Поскольку на мой вопрос не было ответов, я решил сам провести несколько тестов производительности.Основная идея была взята из http://cybertiggyr.com/throughput/throughput.html. Идея теста состояла в следующем:
- Создание двух потоков (pthreads / gthreads).
- Один поток создал данные и записал их в IPC.порциями до 1024 МБ данных было отправлено.
- Другой поток использовал данные из IPC.Я тестировал с размерами фрагментов 4, 64, 256, 512 и 1024 байта.Я тестировал с GAsyncQueue (с gthreads), очередью сообщений POSIX и сокетами домена UNIX (с pthreads).
Вот полученный результат:
Подводя итог, можно сказать, что perf (GAsyncQueue)> perf (mq)> perf (сокет UNIX), хотя производительность GAsyncQueue и очереди сообщений POSIX в большинстве случаев сопоставима - разница возникает только при небольших размерах сообщений.
Мне было интересно, как реализован GAsyncQueue для обеспечения сопоставимой производительности даже лучше, чем собственная реализация очереди сообщений в Linux.Жаль, что его нельзя использовать для межпроцессного взаимодействия, как два других.