перебирать hash_map с помощью итератора в многопоточной программе - PullRequest
0 голосов
/ 07 июля 2011

Linux GCC:

У меня есть hash_map H и функция F, в которой с помощью итератора для обхода цикла H проблема заключается в том, что функция 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 голосов
/ 07 июля 2011

Я не вижу, чтобы при итерации хэша возникли проблемы, но я подозреваю, что при присвоении pList->pData[i] существует проблема с многопоточностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...