0

我有两个线程,每个线程都有一个操作相同 std:map 和 std:vector 变量的函数。

保留这些变量的最佳方法是什么。

谢谢

4

2 回答 2

1

这取决于操作的类型。你是只覆盖存储的值,还是插入/删除元素?在前一种情况下,您只能锁定容器的特定元素(例如,通过std::mutex在每个元素内嵌入 a),而在后一种情况下,您需要在每次操作期间锁定整个容器。

于 2013-01-21T13:35:22.767 回答
0

没有通用的最佳方法。您需要通过一个相应地锁定/解锁互斥锁的函数来清理对同步结构的所有读/写调用。您可能有多个函数,但它们都应该在同一个公共互斥体上运行。

最好有一个存储类并将地图和向量保留为私有成员变量。并在该类中编写锁定/解锁互斥锁并将读/写调用转发到实际映射或向量的转发函数。那么您访问实际结构的门数量有限。并且会更容易管理。

您可以boost::mutex用作该类的成员变量。

于 2013-01-21T14:06:14.593 回答