如何通过插入来破坏std :: map?

时间:2015-08-26 17:28:10

标签: c++ multithreading dictionary stl

我使用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

所以,我的问题是:

  • 如何通过同时多次插入正确模拟std :: map损坏?
  • 如何确保腐败已经发生(或者没有)?

(编译器是g ++(Ubuntu 4.8.4-2ubuntu1~14.04)4.8.4)

0 个答案:

没有答案