Я пытаюсь распараллелить имитационную модель, используя TThreads. Каждый из объектов модели включает среди прочего std::map<obj*, int>
, Модель работает нормально, пока работает только один поток. Если запускается второй поток, я получаю нарушение прав доступа на карте модели первого потока.
Чтобы проверить, действительно ли проблема в карте, я заменил ее на std::vector<pair<obj*, int> >
, Это работает нормально, но намного медленнее, так как мне приходится перебирать весь Вектор каждый раз, когда я пытаюсь найти конкретный obj*
,
Я знаю, что нет возможности зарезервировать память для карты, поэтому я не знаю, как работать с картой без нарушений доступа.
Задача ещё не решена.
Других решений пока нет …