opencv::flann:Index knnsearch线程安全吗?
Is opencv::flann:Index knnsearch thread safe?
我正试图将我的ML问题与flann索引并行化。我的代码大致如下:
Index index(dict, KDTreeIndexParams(TREE_NUM)); // HUGE dict, very expensive to construct -- prefer to create it once.
#pragma omp parallel for
for (int i = 0; i < featuresize; i++) {
// creating thread-local params
auto denseTF = index.knnSearch(<thread-local params>);
// not relevant code
}
我在这里查阅了文档,但是没有关于线程安全的任何内容。我担心的是这个片段是否线程安全?
经过一天的调试和捕获数据竞争并阅读源代码(在这里),我可以得出结论,index.knnSearch
不是线程安全的。
内部,indexTree
正在更新knnSearch
呼叫。我通过为每个线程创建index
的副本来解决这个问题(是的,它很昂贵,但仍然比顺序代码快)。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 如何将元素添加到数组的线程安全函数?
- C++中的线程安全删除
- 在std::thread中,joinable()然后join()线程安全吗
- 在c++队列中使用pop和visit实现线程安全
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 全局变量 多读取器 一个写入器多线程安全?
- 共享队列的线程安全
- boost::文件系统::recursive_directory_iterator多线程安全
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 以线程安全的方式转换 C/C++ 中时区名称字符串的时区偏移量
- 线程安全运算符<<
- 如何使缓存线程安全
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 提升精神 V2 Qi 语法线程安全吗?
- 线程调用的函数对对象删除是否安全?
- asio 链对象线程安全吗?
- 线程安全队列 c++
- 提供对不同类型的数据(建议、代码审查)的线程安全访问的类
- 有没有更好的方法可以使此代码线程安全?线程局部静态似乎是一个生硬的工具