Opengl 高性能并发模型视图绘制体系结构

Opengl 高性能并发模型视图绘制体系结构,opengl,architecture,rendering,graph,tree,Opengl,Architecture,Rendering,Graph,Tree,我在D中有一个单线程文件索引/扫描引擎,我想用一个视图线程来扩展它,该线程将扫描的内容可视化为一个树(或更高版本的强制导向图)。我希望这个解决方案在并发性能方面是现代的(高性能,无视图线程锁定) 我计划以元组流的形式将数据作为文件系统树的逻辑描述发送,其中每个元组包含路径、文件类型和可选的目录内容名称。该流由数据线程通过某种类似队列的机制“发送”到视图线程,视图线程对该模型数据进行布局和opengl渲染 在以下方面,我们应该使用什么样的沟通方式 堵塞(无锁) 数据粗糙度(我应该尽可能多地缓冲并

我在D中有一个单线程文件索引/扫描引擎,我想用一个视图线程来扩展它,该线程将扫描的内容可视化为一个树(或更高版本的强制导向图)。我希望这个解决方案在并发性能方面是现代的(高性能,无视图线程锁定)

我计划以元组流的形式将数据作为文件系统树的逻辑描述发送,其中每个元组包含路径、文件类型和可选的目录内容名称。该流由数据线程通过某种类似队列的机制“发送”到视图线程,视图线程对该模型数据进行布局和opengl渲染

在以下方面,我们应该使用什么样的沟通方式

  • 堵塞(无锁)
  • 数据粗糙度(我应该尽可能多地缓冲并在与帧速率同步的块中发送数据,还是在无锁队列中以较小的包流的形式发送数据)
现在互斥锁的典型等待时间是多少?

互斥锁非常快(现在可能更快):

我使用的方法是“双倍缓冲”帧间更改的所有数据。 即,所有数据有2份副本。在任何给定时刻,“back”/“future”副本都会从“pass”更新并由新输入修改,而“front”/“pass”副本是常量,可以被其他线程“查看”或读取。在帧之间交换这些副本

如果不介意内存开销的话,这需要很少的锁定(仅在帧之间)