Отправка большого количества данных между потоками Qt

У меня есть QThread, который регулярно генерирует довольно большой объем данных (пару мегабайт в секунду ), и ему нужно передать их родительскому потоку (GUI ).

Боюсь, я не так уж уверен во внутренней работе QThread, поэтому я хотел бы попросить о наилучшей практике.

Очевидно, что самый прямой способ передачи данных — просто emitмассив. Однако насколько это эффективно? Знает ли Qt о том, где он используется, и избегает ли он глубокого копирования при отправке и получении?

Если нет, то я с удовольствием могу просто выделить память в основном потоке и дать указатель дочернему потоку, куда он будет писать данные (и только emitкороткие сообщения о прогрессе ). Мне это не кажется самым элегантным решением, поэтому и спрашиваю.

Если Qt избегает копирования данных в несколько буферов при отправке и получении, гарантируется ли это во всех системах? У меня нет ресурсов, чтобы попытаться протестировать его под разными ОС.

20
задан Aquarius_Girl 12 May 2016 в 07:31
поделиться