Я преобразую свою программу из модели с одной меткой в многопоточную модель.
Мой класс треков можно получить доступ и обновляться несколькими различными потоками. Я использую Mutex для защиты критического раздела (доступ и изменение) данных класса треков.
Я храню объекты класса треков в std :: unoromeded_map < /code>. Я сталкиваюсь с трудностями, заполняющими std :: unomoromed_map < /code>
c ++ Стандарт: C ++ 17
os: vxworks 7 < /p>
Code < /p>
#include
class Track
{
private:
int mTrackId;
std::mutex track_under_process_mutex;
//Other data
public:
Track::Track()
{
}
Track::~Track(void)
{
}
// Track received the track id
Track::Track(int trackId)
{
this->mTrackId = trackId;
}
bool helper1(void)
{
std::lock_guard lock(this->track_under_process_mutex);
//Execute track processing algorithm - 1
}
bool helper2(void)
{
std::lock_guard lock(this->track_under_process_mutex);
//Execute track processing algorithm - 2
}
}
int main(int argc, char *argv[])
{
std::unordered_map mTracks;
int trackId = 1;
//Wait for data from ethernet
//commonData.mTracks.emplace({trackId, Track{trackId}}); //or
commonData.mTracks.emplace(trackId, Track{trackId});
//commonData.mTracks[trackId] = Track{trackId};
Track& t = commonData.mTracks.at(trackId);
//Call approprate helper function
}
< /code>
ошибка: < /p>
commonData.mTracks.emplace(trackId, Track{trackId});
< /code>
в экземпляре специализации шаблона функции std :: _ hash
Подробнее здесь: https://stackoverflow.com/questions/796 ... rdered-map
Вставьте/выпустить объект класса, имеющего std :: mutex в std :: unoromended_map ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Boost :: mutex :: ~ mutex (): утверждение `! pthread_mutex_destroy (& m) 'не удалось
Anonymous » » в форуме C++ - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-