提升 BGL 线程安全性
我希望多个线程使用 BGL 的 dijkstra_shortest_paths 和 astar_search 函数,然后读取结果顶点和边的属性映射。
我想知道是否应该使用互斥体来确保线程安全。
所以我的问题是:
1. Boost.Graph 的 dijkstra_shortest_paths 和 astar_search 函数线程安全吗?
2.、如果我只尝试从多个线程读取图的属性映射,我需要担心线程安全吗?
I'd like multiple threads to use the dijkstra_shortest_paths and astar_search functions of the BGL, and then read the property maps of the result vertices and edges.
I'm wondering wether I should use mutexes to ensure thread-safety.
So here are my questions:
1., Are the dijkstra_shortest_paths and astar_search functions of the Boost.Graph thread safe?
2., If I only try to read the property maps of the graph from multiple threads, do I need to worry about thread safety?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
到目前为止,属性映射和 BGL 还不是线程安全的。有关参考,请参阅这篇文章。
Property maps and the BGL are not thread-safe as of now. For reference see this post.
我不完全确定问题1是关于什么的,但是BGL数据结构与STL容器具有相同的线程安全性(即,单独的容器不能以线程不安全的方式共享数据结构,但单个容器上的操作需要同步) 。至于问题 2,对属性的只读访问在多个线程中是安全的,至少对于 BGL 提供的属性映射类型而言是如此。
I'm not completely sure what question 1 is about, but BGL data structures have the same thread safety as the STL containers (i.e., separate containers cannot share data structures in thread-unsafe ways but operations on a single container need to be synchronized). As to question 2, read-only access to properties is safe from multiple threads as long, at least with the BGL-provided property map types.