Вопрос к размышлению - зачем туи мьютексы?
Присваивание (то есть свап) кутешных шаред классов - атомарная операция, насколько мне известно.
Это дает только что N ниток могут одновременно читать (и расшаривать) такую переменную - но не спасает от crash если запись и чтение выполняются параллельно.
Поизучал маленько (аттач). Результат на OSX меня удивил:
- прямой вывод на экран - менее 1 сек
- вывод в QPixmap а потом на экран - 12 сек
- вывод в QImage потом на экран - тоже примерно 12 сек
Отключал финальный вывод (drawImage, drawPixmap), ну минус пол-секунды. Профайлер показывает что во всех случаях используется одна и та же Qt Engine. Вывод текста позорно медленный, все съедается на извлечении glyph(ов) - вернее на защищающей эту операцию блокировке.
Еще одной неожиданностью оказалось что repaint вовсе не перерисовывает немедленно. Похоже что он засылает в очередь сообщение UpdateRequest (не путать с update). В любом случае repaint не зовет paintEvent сам, нужен processEvents
Возможно это "только текст" и "только OSX" - у меня нет оснований обобщать