有没有人知道GLib的GAsyncQueue与POSIX message_queue相对于线程间通信的相对性能?我将有许多小消息(单向和请求 - 响应类型),在Linux上用C实现(现在;可能稍后移植到Windows)。我正在尝试决定使用哪一个。
我发现使用GLib更便于携带,但POSIX mq具有能够选择或轮询它们的优势。
但是,我没有找到关于谁的表现更好的任何信息。
答案 0 :(得分:15)
由于我的问题没有回复,我决定自己进行一些性能测试。主要思想来自http://cybertiggyr.com/throughput/throughput.html。测试的想法是:
以下是获得的结果:
总结一下,perf(GAsyncQueue)> perf(mq)> perf(UNIX套接字),虽然GAsyncQueue和POSIX消息队列的性能在大多数情况下是可比较的 - 但只有小的消息大小才会出现差异。
我想知道如何实现GAsyncQueue以提供比Linux的本机消息队列实现更好的性能。遗憾的是,它不能像其他两个一样用于进程间通信。