c++ - OpenMesh多线程网格导入

标签 c++ multithreading openmesh

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

OpenMesh::IO::ImporterT

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

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

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

最佳答案

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

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

关于c++ - OpenMesh多线程网格导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37358725/

相关文章:

c++ - 存储测试数据

c++ - OpenAL 和 Vista : Device is always 'Generic Software'

.net - 当两个线程试图同时锁定同一个资源时会发生什么?

iphone - CoreData 应用程序在执行获取请求时卡住 pthread_mutex_lock

openmesh - 添加元素时 OpenMesh 迭代器是否会更改?

c++ - 如何使用 OpenGL 绘制 OpenMesh

java - 如何在c++或java代码中调用搜索引擎

c++ - 改变RGBA颜色后OpenGL以16种颜色绘制

multithreading - Xamarin 使用 async./wait VS await Task.Run(在 Xamarin 中)

python - Openmesh:使用 Python 更新面法线比使用 C++ 更快?