|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||
Потоко-безопасная Очередь05.04.2021, 20:16. Показов 13419. Ответов 106
Метки нет (Все метки)
... вырисовалась тема отсюда
а раздельная - вы, наверно, имеете ввиду для LIFO... наверно лучше на list выполнять? sorry, что много вопросов - стою на распутье - даже в отдельную тему вынесла
0
|
|||||||
| 05.04.2021, 20:16 | |
|
Ответы с готовыми решениями:
106
Потоко-независимая очередь записывает 2е команды в одну ячейку. Почему ?
Является ли boost::asio::tcp::acceptor потоко-безопасным ? |
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 07.04.2021, 20:41 | |||
|
Если формирование сообщения в одном потоке и его обработка в другом - трудоёмкие задачи в сравнении с передачей, то параллельная обработка выиграет в производительности, блокировки не сильно повлияют (если не удерживать на время выполнения задач). Ну а если 500 интов "запушить" и потом "запопать", то и потоки не нужны. Ваша изначальная задача в этом примере просто передать 500 товаров другому потоку? Очередь - это просто контейнер?
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 07.04.2021, 20:45 [ТС] | ||
|
это не тот done, который в окончании всего цикла producer'a, вы, наверно, хотели сказать ![]() ладно, завтра продолжу
0
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 07.04.2021, 20:59 | ||
bDone = false; после забора товаров (ничего больше удалять/добавлять не надо)А вообще вам уже говорили, что этот флаг не нужен, есть empty().
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||
| 07.04.2021, 21:03 [ТС] | |||||||
|
да и кстати, вы правы, мой декремент не отрабатывает ВООБЩЕ
под каким углом (СВОИМ) не посмотрю
не получится же всё время на подсказках ![]() Добавлено через 50 секунд
0
|
|||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||||||||||||
| 07.04.2021, 21:17 | ||||||||||||||
cv.wait(lock, [&]{return bElementDone=false;} это очень примерно следующее:
Подставляем в ваше выражение:
1
|
||||||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
| 07.04.2021, 21:20 | ||||||
|
JeyCi,
1
|
||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||
| 07.04.2021, 21:33 [ТС] | ||||||
|
zayats80888, убедили... ставлю
std::unique_lock<mutex> lock(m); в consumer'e...- продолжаю править дальше... спасибо за вскрытие грубой ошибки... oleg-m1973, и за ваш вариант спасибо
0
|
||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 07.04.2021, 21:43 | |||
Сообщение было отмечено JeyCi как решение
Решениеcv.wait(lock, [&]{return bElementDone;}); либо while (!bElementDone ) cv.wait(lock);, а то масло маслянное получается.while (!done ) вклинится, например, после первых двух элементов, вы их вытащите, пойдёте спать, за это время producer накидает остальных, выставит флаг done, вы проснётесь и на следующей итерации цикла проверка done закончит работу, оставшееся вы так и не заберёте.
1
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 07.04.2021, 21:55 [ТС] | |||
|
Добавлено через 50 секунд
0
|
|||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 07.04.2021, 21:58 | ||
|
1
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 07.04.2021, 21:59 | |
|
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||
| 07.04.2021, 22:06 [ТС] | ||||||
мы добили его - моим ходом логической мысли... хоть как-то... ok! декремент выводит в 0
всем спасибо... только в правильности объявлений не совсем уверена
0
|
||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 07.04.2021, 22:12 | |
|
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||
| 07.04.2021, 22:13 | ||||
|
И, собственно, получится тот код, который я тебе показывал, только хуже.
1
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 07.04.2021, 22:16 [ТС] | ||
|
помимо того, что блокировку можно убрать в producer перед done=true (если его объявить atomic_bool)
0
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 07.04.2021, 22:19 | ||
|
Это тот же косяк, о котором я говорил в 33 посте про свою портянку.
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 07.04.2021, 22:23 | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||||
| 08.04.2021, 08:11 [ТС] | |||||||||
![]() ХОТЯ ![]() просто думала, что если notify'ить после загрузки каждого элемента bElementDone - то consumer УЖЕ будет обрабатывать имеющиеся в очереди элементы, хоть она ещё и не full... т.е. всё-таки параллельно... по FIFO Кликните здесь для просмотра всего текста
НО т.к. p.s. но выходить из producer'a в consumer будет только после загрузки всей очереди - т.е. опять же producer блокирован на всё время своей работы - только блокировка рывками лочится/разлочивается... (на каждом loop)... единственное преимущество такого подхода, вероятно, в том, что на время загрузки очереди ничего не будет виснуть?.. - в смысле Event-loop самого приложения... p.p.s - остальные нюансы - касаются вопросов скорости - чтобы определиться с предпочтениями по тому или иному коду этой ветки
0
|
|||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 08.04.2021, 10:00 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 08.04.2021, 10:48 [ТС] | ||
|
конечно, ужасно... ведь все советы применила с этой ветки...
а по делу начинают появляться только ваши эмоции... ![]() мне совет от DrOffset кажется самым валидным ВЫВОД: не старайтесь казаться умнее самой логики - опУститесь до негативных эмоций, которые даже объяснениям не поддаются... потеряете дар речи
0
|
||
| 08.04.2021, 10:48 | |
|
Не безопасная форма Безопасная работа Безопасная регистрация
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|