Не думаю, что проблема связана с readReady()
.
Как только QModbusClient::sendReadRequest()
завершено, вы вызываете обратный вызов readReady()
. Вы не можете go быстрее, чем время, необходимое для запроса до конца sh.
Если мы посмотрим на QModbusClient
документацию , мы можем увидеть это примечание:
Примечание: QModbusClient ставит в очередь запросы, которые он получает. Количество запросов, выполняемых параллельно, зависит от протокола. Например, протокол HTTP на настольных платформах выдает 6 запросов параллельно для одной комбинации хост / порт.
Как вы упомянули, у вас "много запросов одновременно" это может объяснить вашу проблему.
На самом деле я считаю, что очередь, которую вы заметили, касается не вызовов readyRead()
, а стороны QModbusClient
.
Использование многопоточности для обратные вызовы не помогли бы, так как вы не можете «поставить телегу впереди лошади»:)