在多线程程序中使用迭代器循环遍历hash_map

时间:2011-07-07 02:36:45

标签: c++ multithreading gcc iterator hashmap

Linux GCC:

我有一个hash_map H,以及一个使用迭代器循环H的函数F,问题是函数F可以在多线程模式下执行。我不知道为什么它的工作不稳定,似乎迭代器在多线程程序中并不安全。有什么想法吗?

MY_HASH::iterator endIter = m_hash.end();
    for ( hm_Iter = m_hash.begin( ); hm_Iter != endIter; hm_Iter++)
    {
        pList->pData[i].id = hm_Iter->second->id ;
        pList->pData[i].data = hm_Iter->second->data ;
        i++;
    }

1 个答案:

答案 0 :(得分:0)

我无法看到哈希迭代会出现问题,但我怀疑分配给pList->pData[i]是您存在多线程问题的地方。