1

我找不到有关 OpenMesh 操作的线程安全的任何信息,特别是我正在寻找多线程网格导入。目前我正在通过以下方式填充我的网格:

OpenMesh::IO::ImporterT

在单线程中。但如果可能的话 - 我不想在多个线程中执行此操作,而不会阻塞:

meshImporter.add_face(faceHandle);
meshImporter.add_vertex(vertex);

但它比我想象的要慢一点(它消耗了下一次操作的一半以上时间 - 抽取相同网格的时间)。

4

1 回答 1

2

没有一个 OpenMesh 数据结构提供线程安全的修改。诸如add_faceadd_vertex需要更新其他元素类型的索引以使数据结构保持一致状态的操作。因此,在同一网格上同时调用这些方法可能会导致网格数据损坏。

由于OpenMesh::IO::ImporterT主要将其调用转发到底层网格,因此适用相同的限制:必须同步对 OpenMesh 的所有更新。

于 2016-06-08T08:50:43.337 回答