Используя QtConcurrent::run
, вы уже решили одну проблему - стоимость создания потока, поскольку он использует пул потоков.
Что касается переключения контекста, сначала вы можете попытаться измерить их с помощью perf stat
. И зависит от ситуации, оптимизировать ее. Если это просто простые запросы, то, вероятно, подавляющее большинство переключений контекста происходит из системы, а не из вашего приложения.
Выполнение асинхронных операций c означает, что вы можете выполнить задачу и перейти к текущему коду без ожидания результатов. Но обычно такая задача, т.е. запрос sql, порождает поток / процесс или отправляет запрос в ОС.
Qt Networking make, т.е. запрос на чтение и сигналы ОС (epoll), когда данные поступят. Но в случае одноядерной ОС все равно прервет ваш поток.
Если у вас много маленьких запросов, вы можете попытаться оптимизировать их, чтобы сделать меньше запросов, сделайте кеширование.