Вставьте/выпустить объект класса, имеющего std :: mutex в std :: unoromended_mapC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вставьте/выпустить объект класса, имеющего std :: mutex в std :: unoromended_map

Сообщение Anonymous »

Я преобразую свою программу из модели с одной меткой в ​​многопоточную модель.

Мой класс треков можно получить доступ и обновляться несколькими различными потоками. Я использую 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»