888*_*888 5 c++ thread-safety triangulation
我正在编写一个需要快速Minkowski总和计算的C++软件.基于double的实现就足够了.
我评估了一些几何库,如
但我最终使用了另一个第三方库,与以前的库相比速度非常快,并且使用FIST库进行三角测量.
我的代码或多或少地以下列方式工作:
由于循环内的计算独立于循环,我将循环并行化,一切正常.
然后我决定在每个并行回合中移动Minkowski和计算:
我将结果以最佳值作为最终结果
但是第三方图书馆不再工作了.
我收到number_of_threads - 1错误消息说
断言失败.
导致断言失败的文件从运行变为运行以及从线程变为线程,但它们都是与FIST头同名的c文件(虽然我有第三方库的源代码,但我只有一个. lib和FIST库的头文件)
如前所述,我尝试在并行化代码之外计算我需要的所有Minkowski总和并使用其中的结果.这没关系.所以我几乎可以肯定问题来自FIST.
我有两个问题:
你知道FIST库是否是线程安全的吗?
如果没有,你能否建议我一个线程安全(C或更好)的C++三角测量库来取代FIST(可能具有相似的性能)?
编辑:
实际上,我不知道"线程安全"是否正是我想要的:我只需要一个能够同时计算许多独立三角测量的指令库.
我认为如果库没有全局变量,并且它有一个没有static变量的类
class triangulation
{
// no static variables
void execute_triangulation();
}
Run Code Online (Sandbox Code Playgroud)
这可能就足够了.所以我可以使用该类的不同实例并与它们的方法并行运行.
您可以使用CGAL 的 2D 三角测量包来替换 FIST,然后将其用作进行 Minskowski 求和的第三方库的输入。CGAL 三角测量非常快速且可靠。您可以使用约束 Delaunay 三角剖分对多边形和复杂形状进行三角剖分。
顺便问一下,你使用哪个 Minkowsky 库?
| 归档时间: |
|
| 查看次数: |
1141 次 |
| 最近记录: |