我有两个线程,每个线程都有一个操作相同 std:map 和 std:vector 变量的函数。
保留这些变量的最佳方法是什么。
谢谢
这取决于操作的类型。你是只覆盖存储的值,还是插入/删除元素?在前一种情况下,您只能锁定容器的特定元素(例如,通过std::mutex
在每个元素内嵌入 a),而在后一种情况下,您需要在每次操作期间锁定整个容器。
没有通用的最佳方法。您需要通过一个相应地锁定/解锁互斥锁的函数来清理对同步结构的所有读/写调用。您可能有多个函数,但它们都应该在同一个公共互斥体上运行。
最好有一个存储类并将地图和向量保留为私有成员变量。并在该类中编写锁定/解锁互斥锁并将读/写调用转发到实际映射或向量的转发函数。那么您访问实际结构的门数量有限。并且会更容易管理。
您可以boost::mutex
用作该类的成员变量。