我在应用程序中有两个模块。 Module1 拥有并构建boost::geometry::index::rtree Module2 Module1 进行查询,这些查询将传递给RTree。现在,我想加快速度,并拥有多个 Module2 实例,它们可以查询一个Module1 实例的,并分别工作。我100%确定,在时,任何Module2正常运行的RTree都不会更改

我发现了这个问题:Can I use Boost.Geometry.index.rtree with threads?,但是它描述了更复杂的情况,当修改rtree并从不同的线程查询时。这个答案是模棱两可的:答案中说:“没有boost Rtree绝对不是线程安全的”。但在注释中指出:“进行查询是安全的,甚至可以创建用于创建的变通方法”。什么是正确答案?除了问直接问题以提拔作者之外,是否有其他资源可以找到答案?

Tl; dr:

如果我100%确信没有线程会修改RTree,从不同线程对boost::geometry::index::rtree进行查询是否安全?

最佳答案



没有矛盾。亚当是作者。每个人都是对的。注意答案还说



通常,只要按位表示形式不变,一切对于并行访问都是安全的。这与库支持无关。

请注意,由于Adam Wulkiewicz的权威评论,您不需要“快速扫描”。

脚注:仍然不能使库线程安全。这是完全正确的,因为C++的内存模型没有按位常量数据的数据争用。

关于c++ - 可以通过并行线程来完成Boost的rtree查询吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32739177/

10-10 14:55