Задать вопрос
@Dead_Bit

Потокобезопасный контейнер?

Имеется некоторый контейнер, содержащий в себе указатели на экземпляры пользовательского класса. Также, имеется 1 поток (назовём его модификатор), добавляющий и удаляющий элементы контейнера и N потоков, делающих обход элементов и производящих с ними определённые действия (назовём их хэндлерами). Задача заключается в том, чтобы сделать данный контейнер потокобезопасным и при этом обеспечить модификатору приоритетный доступ к контейнеру. То есть, если хэндлеры в количестве K штук ожидают доступа к контейнеру и в этот момент доступ запрашивает модификатор, то необходимо переместить модификатор в начало очереди ожидания и предоставить ему доступ первым.
  • Вопрос задан
  • 267 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Посмотрите на библиотеку для очереди задач https://github.com/seanmiddleditch/jobxx/blob/deve...
Может это и есть то что вам нужно.
Основная идея в том, что мы не блокируем очередь надолго, это значит что "модификатор" всегда сможет положить туда новую задачу почти без ожидания.
Ответ написан
@tugo
Композицией или наследованием делаете свой класс контейнера с методами получения и размещения объекта.
Методы делаете многопоточными с помощью Read Write Mutex.
Есть ли такие мьютексы в стандартной библиотеке не знаю.
https://www.youtube.com/watch?v=KJS3ikoiLso
https://doc.qt.io/archives/qq/qq11-mutex.html#unde...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы