powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Single-producer/multi-consumer queues
6 сообщений из 31, страница 2 из 2
Single-producer/multi-consumer queues
    #39033578
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovОбработка ошибок в такой очереди будет весьма крепким орешком, однако...


Там тривиальная задача с набором из 2 семафоров.

Single-producer устанавливает значение входяжего семафора
на нужное количество consumer -ов , те ломятся в кадр , а Single-producer
засыпает на выходящем семафоре.
Закончив работу consumer -ы сбрасыают исходящий семафор
и засыпают на входящем.
Single-producer меняет указатель на следующий кадр и
снова запускает consumer -ов

И так по кругу.

ТС-у нужно изучить принципы работы семафоров.

Если Single-producer Single-consumer то достаточно одного семафора,
если их разное количество то нужен набор из 2 семафоров.

Я не знаю как в винде обстоят дела с атомарностью работы
с набором семафоров , возможно для защиты набора от рассогласования
придется их защищать мутексом .
В Юниксе работа с набором семафоров атомарна из коробки.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39033581
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формально это задача по созданию
мутекса, который может преобразовываться из эксклюзивного в разделяемый.

Читатели могут пользоваться ресурсом одновременно ,
а писатели только в одиночку.

Если такой примитив сихронизации где то уже реализован ,
то можно воспользоваться им.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39033753
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДохтаРSingle-producer устанавливает значение входяжего семафора на нужное
количество consumer -ов , те ломятся в кадр , а Single-producer засыпает на выходящем
семафоре.
Закончив работу consumer -ы сбрасыают исходящий семафор и засыпают на входящем.
Single-producer меняет указатель на следующий кадр и снова запускает consumer -ов

И так по кругу.
И вот тут-то возникает вопрос: что делать если у пятого из десяти consumer-ов в ходе
работы произошла ошибка? Прервать всю работу и оповестить остальных, что последний
обработанный ими кадр нужно дропнуть? Или пропустить кадр только этим consumer-ом и
получить несогласованные потоки на выходе?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39034202
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДохтаРSingle-producer устанавливает значение входяжего семафора на нужное
количество consumer -ов , те ломятся в кадр , а Single-producer засыпает на выходящем
семафоре.
Закончив работу consumer -ы сбрасыают исходящий семафор и засыпают на входящем.
Single-producer меняет указатель на следующий кадр и снова запускает consumer -ов

И так по кругу.
И вот тут-то возникает вопрос: что делать если у пятого из десяти consumer-ов в ходе
работы произошла ошибка? Прервать всю работу и оповестить остальных, что последний
обработанный ими кадр нужно дропнуть? Или пропустить кадр только этим consumer-ом и
получить несогласованные потоки на выходе?



Можно создать битовый массив при каждом кадре
пусть каждый consumer зводит свой
бит если все ОК, а потом сравнивать его с 0xFF....FF маской.
Если битовый масив маске не соотвествует значит кто то из consumer -ов
зафейлился.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39034210
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДохтаРЕсли битовый масив маске не соотвествует значит кто то из consumer -ов
зафейлился.
"А дальше?.." (с) ПВ

Обнаружить факт ошибки - просто. Но лично мне в аналогичной задаче пока не удалось
придумать приемлемую схему реакции на ошибку. Проблема становится ещё хуже, если очередь
удлинить, позволяя тормозному продюсеру готовить следующую порцию данных в то время как
консюмеры обрабатывают предыдущие.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39034616
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДохтаРЕсли битовый масив маске не соотвествует значит кто то из consumer -ов
зафейлился.
"А дальше?.." (с) ПВ

Обнаружить факт ошибки - просто. Но лично мне в аналогичной задаче пока не удалось
придумать приемлемую схему реакции на ошибку. Проблема становится ещё хуже, если очередь
удлинить, позволяя тормозному продюсеру готовить следующую порцию данных в то время как
консюмеры обрабатывают предыдущие.


А дальше зависит от цели, которую преследует решение здачи.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Single-producer/multi-consumer queues
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]