Вставьте/выпустить объект класса, имеющего 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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Boost :: mutex :: ~ mutex (): утверждение `! pthread_mutex_destroy (& m) 'не удалось
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • `std::map<std::string, enum{1, 2, 3, 4}>` (или std::map<std::string, tuple<bool, bool>>`) кэширует` против `std: :set<st
    Anonymous » » в форуме C++
    0 Ответы
    323 Просмотры
    Последнее сообщение Anonymous
  • Неопределенная ссылка на `std :: condition_variable :: wate (std :: unique_lock &)@glibcxx_3.4.30 '
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Написание концепции C++ для класса, имеющего метод, принимающий std::array произвольного размера.
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • AutoFixture не может создать экземпляр класса, имеющего свойство типа RestSharp.RestResponse.
    Гость » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость

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