我使用std :: map作为全局容器,它应该存储来自许多线程的数据项。这些线程为自己创建一个映射条目,然后更新它。但是,某些线程可以共享映射条目,因此映射 second 参数(值)具有所需的所有保护(原子等)。条目永远不会被删除。
我担心地图条目插入。我怀疑如果两个线程同时创建一个具有相同键的映射条目,它将不会很好。我想模拟这种情况,并编写了一个测试程序(如下),但是我没有看到任何地图损坏的迹象。
class TestFooBar(TestCase):
def setUp(self):
self.myfoobar = FooBar()
@mock.patch('foobar.ConfigParser')
def test_read(self,mock_foobar):
self.myfoobar.method("configuration.ini")
assert mock_foobar.called # THIS IS OKAY
assert mock_foobar.read.called # THIS FAILS
mock_foobar.read.assert_called_with("configuration.ini") # FAILS TOO
所以,我的问题是:
(编译器是g ++(Ubuntu 4.8.4-2ubuntu1~14.04)4.8.4)