OpenMP v.2.0 or Boost thread 1.59
OpenMP v.2.0 or Boost thread 1.59
我想知道如何以安全的方式并行处理下面的for循环。我找到了这样一个可能的解决方案。然而,我仅限于使用OpenMP版本2.0和Boost版本1.59。
算法解释:
它遍历位于边界框内的所有三角形,然后在 _考虑三角形函数中检查交集(与唯一三角形)的可能性。最后,在 _contesttriangle 中,如果一个三角形是相交的,则将该三角形插入set容器intersectedTri。
//Iterating through every triangle
std::set<Triangle> intersectedTri;
for(IntersectedTrianglesIterator it=tree.Begin_IteratorByBoundingBox(bbox_min,bbox_max);it!=tree.End_IteratorByBoundingBox(bbox_min,bbox_max);++it)
_ConsiderTriangle(it->GetTriangle());
我想知道如何安全地并行它
你可以使用任何方法,只要你同步插入到intersectedTri。
// globals
boost::mutex mut;
// inside func
boost::mutex::scoped_lock lock(mut);
intersectedTri.insert(tri);
相关文章:
- 无法将参数传递给 boost::thread 构造函数
- 如何使用boost.thread运行多个接收器,每个线程应该分配给每个接收器?
- 使用 boost::thread 运行函子,但析构函数被错误地调用
- 最佳实践:我应该使用 std::thread、boost 还是本机调用
- boost::asio io_service thread pool with io_service::work
- 在thread.hpp上boost asio udp 螺纹= get_id()错误
- thread_specific_pointer可以在哪些平台上工作而无需 boost::thread?
- 将 boost::thread 与 C++11 std::mutex 混合使用是否安全?
- 同时使用 boost.python 和 boost.thread 时出现编译错误
- Boost.thread代码在Ubuntu和Windows中表现出不同的行为
- Pointer to boost::thread
- Linux上多核计算的低性能(openMP、boost::thread等)
- boost - thread.join() halts the ui
- 将基类的引用传递给 boost::thread 并在派生类中调用虚函数是否有效
- Difference between boost::thread and std::thread
- std::thread是boost::thread的替代品吗?
- 将 boost/thread headers 与 clang++ (Windows) 一起使用时出现问题
- 在linux下使用boost::thread创建一个boost::asio工作线程
- "Thread" Boost 无法在 OSX 上构建?
- C++ Boost::Thread & Boost::ASIO Memory leak