Как лучше всего синхронизировать данные при использовании QQuickFramebufferObject? - PullRequest
0 голосов
/ 10 июля 2020

Итак, я использую QQuickFramebufferObject и QQuickFramebufferObject::Renderer в моем приложении Qt. Как упоминалось здесь :

Чтобы избежать состояний гонки и проблем чтения / записи из двух потоков, важно, чтобы средство визуализации и элемент никогда не читали и не записывали общие переменные. Связь между элементом и средством визуализации в первую очередь должна происходить через функцию QQuickFramebufferObject :: Renderer :: synchronize ().

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

...