在不同的线程中执行每个QTModbus响应

用户45234

我正在开发Modbus应用程序。发送这样的读取请求。

void MainWindow::readData(int start,int len){

    QModbusDataUnit readUnit(QModbusDataUnit::InputRegisters,start,len);
    if (auto *reply = modbusDevice->sendReadRequest(readUnit,modbusAddr)) {
        if (!reply->isFinished())
            connect(reply, &QModbusReply::finished, this, &MainWindow::readReady);
        else
            delete reply; // broadcast replies return immediately
    }
}

由于我同时有许多读取请求,因此我认为响应被“卡住”在某种队列中,每个队列一个接readReady一个地执行,这有点慢。

我想readReady在自己的线程中执行每个我有办法吗?或者,也许这将是“不良做法”?

我已经尝试过在readReady插槽中使用QtConcurrent :: run ,但这并没有真正的帮助。

法雷诺

我不认为问题出在哪里readReady()

一旦QModbusClient::sendReadRequest()完成,就调用readReady()回调。您的完成速度不能超过完成请求所花费的时间。

如果我们看一下QModbusClient文档,我们可以看到以下注释:

注意:QModbusClient将收到的请求排队。并行执行的请求数取决于协议。例如,台式机平台上的HTTP协议针对一个主机/端口组合并行发出6个请求。

正如您提到的那样,您“有许多同时请求”,这可以解释您的问题。

实际上,我认为您注意到的排队与readyRead()电话无关,而与通话有关QModbusClient

对回调调用使用多线程将无济于事,因为您无法“将车放在马前” :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ServerEndpoint的每个方法是否由不同的线程执行?

来自分类Dev

在不同的线程上执行每个日志记录请求

来自分类Dev

Ansible在不同主机中执行每个角色

来自分类Dev

确保每个线程的执行

来自分类Dev

`getpid()` 是否在进程的每个线程中返回不同的值?

来自分类Dev

C ++,当每个工作线程必须执行几个不同的任务时,如何为任务实现线程池

来自分类Dev

重用线程以执行不同的操作

来自分类Dev

如何在jmeter中为每个不同的响应代码保存样本响应?

来自分类Dev

如何知道JMeter中每个线程或用户的执行时间

来自分类Dev

如何使每个线程选择不同的项目?

来自分类Dev

线程函数响应中的延迟

来自分类Dev

如何启动多个线程,每个线程在不同的文件上工作?

来自分类Dev

在不同的线程上执行工作

来自分类Dev

如何在两个不同的线程中同时执行PyObject_CallObject()?

来自分类Dev

Eclipse中的Run和Debug的线程run()方法执行不同

来自分类Dev

可以在不同的线程中同时执行相同对象的相同方法吗?

来自分类Dev

如何在两个不同的线程中同时执行PyObject_CallObject()?

来自分类Dev

多线程在一种运行方法中执行不同的任务

来自分类Dev

对数组的每个元素执行不同的计算

来自分类Dev

对每个文件执行不同操作的For循环

来自分类Dev

对数组的每个元素执行不同的计算

来自分类Dev

在主线程中执行Action <>

来自分类Dev

在线程中执行malloc

来自分类Dev

线程未在C中执行

来自分类Dev

在主线程中执行Action <>

来自分类Dev

在自己的线程中执行类

来自分类Dev

如何在列表中查找重复项,并对找到的每个重复项执行不同的计算?

来自分类Dev

在不同于服务器时区(UTC)的时区(CST)中的每个午夜执行功能

来自分类Dev

如何使用数据透视图数据模板在每个ItemList中执行不同的任务?

Related 相关文章

  1. 1

    ServerEndpoint的每个方法是否由不同的线程执行?

  2. 2

    在不同的线程上执行每个日志记录请求

  3. 3

    Ansible在不同主机中执行每个角色

  4. 4

    确保每个线程的执行

  5. 5

    `getpid()` 是否在进程的每个线程中返回不同的值?

  6. 6

    C ++,当每个工作线程必须执行几个不同的任务时,如何为任务实现线程池

  7. 7

    重用线程以执行不同的操作

  8. 8

    如何在jmeter中为每个不同的响应代码保存样本响应?

  9. 9

    如何知道JMeter中每个线程或用户的执行时间

  10. 10

    如何使每个线程选择不同的项目?

  11. 11

    线程函数响应中的延迟

  12. 12

    如何启动多个线程,每个线程在不同的文件上工作?

  13. 13

    在不同的线程上执行工作

  14. 14

    如何在两个不同的线程中同时执行PyObject_CallObject()?

  15. 15

    Eclipse中的Run和Debug的线程run()方法执行不同

  16. 16

    可以在不同的线程中同时执行相同对象的相同方法吗?

  17. 17

    如何在两个不同的线程中同时执行PyObject_CallObject()?

  18. 18

    多线程在一种运行方法中执行不同的任务

  19. 19

    对数组的每个元素执行不同的计算

  20. 20

    对每个文件执行不同操作的For循环

  21. 21

    对数组的每个元素执行不同的计算

  22. 22

    在主线程中执行Action <>

  23. 23

    在线程中执行malloc

  24. 24

    线程未在C中执行

  25. 25

    在主线程中执行Action <>

  26. 26

    在自己的线程中执行类

  27. 27

    如何在列表中查找重复项,并对找到的每个重复项执行不同的计算?

  28. 28

    在不同于服务器时区(UTC)的时区(CST)中的每个午夜执行功能

  29. 29

    如何使用数据透视图数据模板在每个ItemList中执行不同的任务?

热门标签

归档