QWebSocketServer发送延迟

时间:2019-03-21 10:39:21

标签: c++ qt websocket

我有一个带有QWebSocketServer的图像处理类。当我开始处理图像时,我会发送一条START_PROCESSING消息。处理完成后,我发送一个RESULTS消息。发生的情况是,消息均在处理结束时一次又一次地发送。

在第一个测试中,我仅在必须调用send函数时调用了send函数。然后,我测试了“发射/捕获”信号方法,但是没有其他线程(来自同一主线程的“发射/捕获”);相同的结果现在,我的想法是运行一个单独的线程来捕获发射并发送消息。这可以是一个好方法吗?还是我只是缺少有关发送“机械”消息的信息?

1 个答案:

答案 0 :(得分:0)

如果您不进入事件循环,则QWebSocket将不会发送或接收任何东西。

三个选项:

  1. 将图像处理置于第二个线程中。
  2. 为QWebSocket使用第二个线程。为了避免出现竞争状况,请使用信号插槽机制将数据发送到另一个线程中的QWebSocket。
  3. 在图像处理内部调用QCoreApplication :: processEvents()。

在大多数情况下,第一个是最好的选择。如果您在QWebSocket上负担很重,那么第二个可能是一个好主意。第三种是如果您必须是单线程的选项。