Итак, я использую QQuickFramebufferObject
и QQuickFramebufferObject::Renderer
в моем приложении Qt. Как упоминалось здесь :
Чтобы избежать состояний гонки и проблем чтения / записи из двух потоков, важно, чтобы средство визуализации и элемент никогда не читали и не записывали общие переменные. Связь между элементом и средством визуализации в первую очередь должна происходить через функцию QQuickFramebufferObject :: Renderer :: synchronize ().
Поэтому я должен синхронизировать все данные, которые я визуализирую, когда вызывается QQuickFramebufferObject::Renderer::synchronize()
. Однако, поскольку во многих случаях данные, которые отправляются в поток рендеринга, могут быть довольно большими, я бы хотел избежать копирования этих данных (которые хранятся в DataObject
), поэтому сейчас я передаю std::shared_ptr<DataObject>
в функции и присвоить это частному члену моего класса QQuickFramebufferObject::Renderer
. Этот подход работает нормально, но я не уверен, что это «правильный» способ делать что-то. Какой подход я могу использовать для обмена / передачи данных между потоком GUI и потоком рендеринга?