У меня есть QThread
, который регулярно генерирует довольно большой объем данных (пару мегабайт в секунду ), и ему нужно передать их родительскому потоку (GUI ).
Боюсь, я не так уж уверен во внутренней работе QThread
, поэтому я хотел бы попросить о наилучшей практике.
Очевидно, что самый прямой способ передачи данных — просто emit
массив. Однако насколько это эффективно? Знает ли Qt о том, где он используется, и избегает ли он глубокого копирования при отправке и получении?
Если нет, то я с удовольствием могу просто выделить память в основном потоке и дать указатель дочернему потоку, куда он будет писать данные (и только emit
короткие сообщения о прогрессе ). Мне это не кажется самым элегантным решением, поэтому и спрашиваю.
Если Qt избегает копирования данных в несколько буферов при отправке и получении, гарантируется ли это во всех системах? У меня нет ресурсов, чтобы попытаться протестировать его под разными ОС.