|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
|||||||
Потоко-безопасная Очередь05.04.2021, 20:16. Показов 12784. Ответов 106
Метки нет (Все метки)
... вырисовалась тема отсюда
а раздельная - вы, наверно, имеете ввиду для LIFO... наверно лучше на list выполнять? sorry, что много вопросов - стою на распутье - даже в отдельную тему вынесла
0
|
|||||||
| 05.04.2021, 20:16 | |
|
Ответы с готовыми решениями:
106
Потоко-независимая очередь записывает 2е команды в одну ячейку. Почему ?
Является ли boost::asio::tcp::acceptor потоко-безопасным ? |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 05.04.2021, 20:20 | |||
|
Добавлено через 38 секунд Добавлено через 1 минуту Только надо использовать std::condition_variable_any. Не рекомендую.
0
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 05.04.2021, 20:22 | |||
|
Ну и ваш producer не отпускает блокировку на протяжении всего времени работы.
1
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 05.04.2021, 20:22 | |
|
del
0
|
|
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
||
| 05.04.2021, 20:27 [ТС] | ||
|
c #include <shared_mutex> в том коде и всеми shared_mutex дальше по коду:error: no matching function for call to 'std::condition_variable::wait(std::uniq ue_lock<std::shared_mutex>&)'
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 05.04.2021, 20:27 | |
|
1
|
|
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
|||||||||||
| 05.04.2021, 21:01 [ТС] | |||||||||||
|
и классом - такая мне нравится
... наверно, всё-таки итератор надо делать в классе?
0
|
|||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 05.04.2021, 21:05 | |||||||
0
|
|||||||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
||||||||
| 05.04.2021, 21:34 [ТС] | ||||||||
|
перегрузить << ?
кстати variadic-template можно подрядить в сам класс, наверно ? (тоже для вывода - рекурсивно)... правда с разделителем (хотя бы '\n') там засада... Добавлено через 19 минут я, конечно, понимаю, что класс есть смысл создавать, когда в него надо инкапсулировать какой-либо ресурс, чтобы корректно создавался объект и корректно удалялся (т.е. в стиле RAII)... иначе да, согласна - смысла нет, разве что - чтобы не дублировать этот код дальше Добавлено через 4 минуты
0
|
||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 05.04.2021, 21:35 | ||
|
condition_variable и мьютекс нужны для потоков, которые работают с этой очередью и не только с ней. Запихивать их внутрь класса "очередь" бессмысленно.
1
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||
| 05.04.2021, 22:36 | ||||
|
Завтра я захочу реализовать lock-free очередь с тем же интерфейсом - и мне не придётся переделывать код где она используется. Смысл тот же, что и у всех классов - инкапсуляция, повторное использование кода и т.д. --- Там всё постепенно и доступно объясняется(в том числе есть примеры очередей, как с мьютексами, так и lock-free). Просто вы выдёргиваете информацию из разных мест, в итоге в голове будет каша, а тема на самом деле не простая. Если нет времени на книги, то пользуйтесь готовыми решениями(библиотечными, а не портянками с сайтов и форумов).
1
|
||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 05.04.2021, 22:46 | ||
|
Что касается легкой замены на lock-free, то это в некотором роде самообман: обычно решения, хорошо работающие с блокировками плохо работают с lock-free и наоборот. Тут не все так однозначно, чтобы настолько сильно уповать на простую замену одного на другое.
2
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 05.04.2021, 23:06 | ||
|
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|||||||
| 05.04.2021, 23:14 | |||||||
|
zayats80888, вот пример того, о чем я выше говорил:
2
|
|||||||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
||||
| 06.04.2021, 09:22 [ТС] | ||||
|
а то там свои примитивы синхронизации Добавлено через 8 минут
0
|
||||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
|
| 06.04.2021, 09:31 [ТС] | |
|
оставлю красивую шпаргалку по мьютексам для истории
0
|
|
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
||
| 06.04.2021, 10:03 [ТС] | ||
|
Добавлено через 2 минуту p.s. и кстати по линку, откуда задачка из #1, - и atomic показан (более быстрой заменой мьютексу) - для простых типов и случаи ускорения, выбирая нужный мьютекс Добавлено через 21 минуты p.p.s. ой забыла линк на шпаргалку оставить
0
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
||||||||||||
| 07.04.2021, 16:57 [ТС] | ||||||||||||
работает нестабильно - иногда зависает, ничего не выведя (ни вариант под спойлером, ни он же с закомментированной блокировкой в consumer) - возможно, прчина Deadlock??Кликните здесь для просмотра всего текста
а лочить на всего producer'a, действительно, не добавит performance... но, возможно это подразумевалось в задаче... вариант ping-pong немного сложнее - доп. флаги используются... Добавлено через 2 минуты ping-pong
0
|
||||||||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 07.04.2021, 17:03 | ||
Сообщение было отмечено JeyCi как решение
Решение
1
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||||
| 07.04.2021, 17:09 | ||||||||||
Если речь идёт об notify_one Добавлено через 1 минуту
0
|
||||||||||
| 07.04.2021, 17:09 | |
|
Помогаю со студенческими работами здесь
20
Не безопасная форма Безопасная работа Безопасная регистрация
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|