【发布时间】:2023-03-07 05:29:01
【问题描述】:
我有一个多线程 C++ 应用程序,它使用 OpenSceneGraph 库进行 3D 渲染。我计划使用 boost::threads 将 OSG 的渲染循环作为一个单独的线程启动,将包含共享状态的数据结构传递给线程。我试图避免任何过于重量级的东西(如互斥锁)进行同步,因为渲染循环需要非常紧凑,而 OSG 本身试图避免必须锁定。大多数共享状态是在线程启动之前设置的,并且永远不会改变。我确实有一些需要更改的数据,我计划对其进行双重缓冲。但是,我有一个简单的布尔值,用于指示线程暂停渲染,然后恢复渲染,以及另一个来终止它。在这两种情况下,应用程序线程都会设置布尔值,而渲染线程只读取它。我需要同步对这些布尔值的访问吗?据我所知,可能发生的更糟糕的事情是渲染循环会在暂停或退出之前继续进行额外的帧。
【问题讨论】:
标签: c++ multithreading boolean mutex openscenegraph