我正在寻找 Windows 上 Qt (v5.3) 中具有高性能的 IPC。在我的最终情况下,我将有 3 个(或更多)生产者进程和一个消费者进程。
在此之前,我使用 1 个生产者线程和 1 个消费者线程进行了一些测试,同时使用了QLocalSocket/QLocalServer(示例)和QSharedMemory(示例),我很惊讶时间是可比的。
特别是我得到了以下结果(从第一条消息到收到最后一条消息):
发送/写入 1000 字符串消息:QSharedMemory:1020ms,QLocalSocket 1010ms 发送/写入 5000 字符串消息:QSharedMemory:5010ms,QLocalSocket 5090ms 发送/写入 10000 字符串消息:QSharedMemory:10097ms,QLocalSocket 10850ms
问题是:
- 您是否同意这个结果,或者我的代码中可能有错误?
- Qt 中是否有一些性能更好的 IPC 方法?
提前致谢。阿瑟86
2014 年 10 月 23 日更新
我花了更多时间来调查这个疑问,并找到了合理的回应。我发现线程之间的上下文切换使用了先前时间的很大一部分。特别是,如果我删除 Thread::msleep(0); 在每个周期结束时,我能够达到更低的计算时间。
例如。
- 1000 字符串消息:对于 QLocalSocket 和 QSharedMemory 都小于 100 毫秒
- 5000 字符串消息:对于 QLocalSocket 和 QSharedMemory 都小于 300 毫秒
- 10000 字符串消息:对于 QLocalSocket 和 QSharedMemory 都小于 1000 毫秒
我认为删除Thread::msleep(0)
不是一个好主意。不是吗?你能建议我一些方法来提高睡眠指导的表现吗?