我有一个QGraphicsScene,里面有大约1000个QGraphicsItems,它们实际上是物理项。每一帧它们都会推进,检查碰撞并解决碰撞,除此之外还有其他操作。我真的很想将物理多线程化。
据我了解QGraphics类不是线程安全的,这意味着只能从主线程调用它们。这是否强制我使用信号/槽机制将最终的项属性(x,y,旋转)每一帧发送到主线程,然后使用主线程方法来实际更新QGraphicsItems?或者有更简单的方法吗?
以下仅为假设:我是否可以使用QtConcurrent在我的QGraphicsItems列表上运行一个方法?如果我在我的QGraphicsItem绘画方法中使用QMutex和我的物理方法中使用QMutex(会更改我的QGraphicsItem的属性),这样是否保证只有一个线程在任何时候读/写每个QGraphicsItem?
据我了解QGraphics类不是线程安全的,这意味着只能从主线程调用它们。这是否强制我使用信号/槽机制将最终的项属性(x,y,旋转)每一帧发送到主线程,然后使用主线程方法来实际更新QGraphicsItems?或者有更简单的方法吗?
以下仅为假设:我是否可以使用QtConcurrent在我的QGraphicsItems列表上运行一个方法?如果我在我的QGraphicsItem绘画方法中使用QMutex和我的物理方法中使用QMutex(会更改我的QGraphicsItem的属性),这样是否保证只有一个线程在任何时候读/写每个QGraphicsItem?