|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
|||||||
Потоко-безопасная Очередь05.04.2021, 20:16. Показов 12774. Ответов 106
Метки нет (Все метки)
... вырисовалась тема отсюда
а раздельная - вы, наверно, имеете ввиду для LIFO... наверно лучше на list выполнять? sorry, что много вопросов - стою на распутье - даже в отдельную тему вынесла
0
|
|||||||
| 05.04.2021, 20:16 | |
|
Ответы с готовыми решениями:
106
Потоко-независимая очередь записывает 2е команды в одну ячейку. Почему ?
Является ли boost::asio::tcp::acceptor потоко-безопасным ? |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 08.04.2021, 10:58 | |
|
1
|
|
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
|
| 09.04.2021, 19:29 [ТС] | |
|
Concurrency - Remember
честно говоря, видела страшилки, что ABA-problem возникает в producer-consumer архитектуре (используя CV и мьютекс)... оказывается, только для случаев lock-free... может, что-то неправильно запомнила?
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 09.04.2021, 19:49 | ||
|
1
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 10.04.2021, 08:25 | ||
|
1
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
||||
| 10.04.2021, 10:56 [ТС] | ||||
в общем, у меня такое ощущение, что главная проблема возникает, когда куча - одна, а ядер - несколько... => проблема в словах для железа- кто current, а кто next для тех или иных контейнеров... хотя проблема, конечно, глубже - успел или не успел write после того, как read... и начал кто-то другой read--modify-write или ещё не успел начать... выходов предлагается много для решения этой проблемы - все с тяжёлой артиллерией (garbage collection, hazard pointers, чтобы универсально, а не только для DCAS архитектур)... поэтому считаю, контейнеры U++ с индексированным доступом (индексы в данном случае - в качестве счётчика) - самыми удобными!.. никаких current-next, никаких искуственных счётчиков, только родные для контейнеров фреймворка, никакой путаницы, простота и безопасность... имхо! p.s. задачка на всякий случай... и ликбез
0
|
||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 10.04.2021, 11:06 | ||
|
С использованием мьютекса, например, это сделать легко.
0
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
|||||
| 10.04.2021, 19:36 [ТС] | |||||
- значит блокировка надёжнее (в любом случае в production не сдают код, работающий только на опр. процессорах - я про DCAS) Добавлено через 14 минут ссылка есть на C++
https__stackoverflow__com__/questions/849786/is-a-lock-wait-free-doubly-linked-list-possible/849837#849837
- всё начинать, наверно, вообще стоит с lock-free memory manager... чтобы эту lock-free спокойно прикручивать к контейнерам... p.s. Lock-Free_DoublyLinkedList - в общем, нелегко... CAS-based algorithm Добавлено через 3 минуты A Fast General Purpose Lock-Free Queue for C++ Добавлено через 3 часа 54 минуты САМОЕ ИНТЕРЕСНОЕ: мне этот пример кажется более понятным, чем про обедающих философов (видя название 2го, я не дочитывала его до конца, всё время откладывая на потом) - то ли дело нормальная постановка вопроса:
0
|
|||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 10.04.2021, 19:40 | |||
|
Я в лыжи обутый, То ли лыжи не едут То ли дедлок....
0
|
|||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
||||||
| 10.04.2021, 20:25 [ТС] | ||||||
|
вот всё-таки интересно, можно ли на лыжах с машиной применить др. подход?
я бы даже предположила, что можно лыжи, машину и юзеров выделить в отдельные классы и лямбдами менять их State - в общем и целом... но с моделью ещё надо разобраться... параллельность судьбы лыж и машины будут под большим вопросом (т.е. лыжи и машина не будут существовать во времени совместно) ![]() Добавлено через 23 минуты ... ладно, отложим пока лыжи, назрела более серьёзная проблема этой ветки
- вот поэтому producer и consumer и работают с одним(!) мьютексом и consumer в состоянии wait - будет ждать... имхо... лыжи
0
|
||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||||||
| 10.04.2021, 20:29 | ||||||||||||
0
|
||||||||||||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
|
| 10.04.2021, 20:36 [ТС] | |
|
там мьютекс m - думаю, всё на одном надо делать, чтобы producer и consumer и их действия были логично упорядочены
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 10.04.2021, 21:35 | |
|
0
|
|
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
||
| 12.04.2021, 09:11 [ТС] | ||
|
всё-таки проектирование параллельности - тоже надо уметь рисовать в UML - чтобы потом не забыть структуру кода и не вчитываться в него снова
...какой-то UML Online Editor Добавлено через 9 минут и кстати, банально - Two models for concurrent programming... а то я что-то с Actor'ами задумалась -- а ведь у меня так и было до знакомства с shared_memoryДобавлено через 2 минуты самый развёрнутый Multithreading and concurrency - много примеров... Добавлено через 7 минут
0
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
||||||
| 12.04.2021, 21:38 [ТС] | ||||||
|
а если попробовать сделать на Семафоре Thread-safe Queue, то надо будет использовать и Семафор и Мьютекс??
0
|
||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 12.04.2021, 21:42 | ||
|
1
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
|||
| 12.04.2021, 22:48 [ТС] | |||
|
в общем создаётся ощущение, что эти потоки хорошо для Аудио-Видео контента... ну и для сложных мат. расчётов... иначе и message'ами ОК (как, банковские АТМ часто описываются)...
и как справедливо отметил TRam_ по моей ветке: повторюсь, cv для Win7 и выше -- тут всё сводится к NT kernel - интересная статья 2003 г. c выводом для Win32 - про все подводные камни и фиаско попытки сделать cv на семафоре
как и ваше предупреждение здесь
0
|
|||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 12.04.2021, 22:57 | ||
|
0
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,524
|
|
| 12.04.2021, 22:57 [ТС] | |
когда лочить не приходится, то да... поэтому и разделяем бизнес-логику по потокам... а ожидание на cv, да ещё если очередь многомилионная, а ядра всего 4, - всё равно кушает время за счёт switch-context
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 12.04.2021, 23:08 | ||
|
0
|
||
| 12.04.2021, 23:08 | |
|
Помогаю со студенческими работами здесь
80
Не безопасная форма Безопасная работа Безопасная регистрация
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|