powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Single-producer/multi-consumer queues
25 сообщений из 31, страница 1 из 2
Single-producer/multi-consumer queues
    #39030642
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть задачка.
Single-producer получает какой то объект и кладет в queues ,
потом каждый consumer (от 1 до ??) читает из queues .
Но удаляет только тогда, когда каждый consumer прочитал объект.

М.б. кто то решал такое уже?

Заранее спасибо.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39030659
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавь счетчик к объекту. Задавай счетчиком количество читателей, каждый после прочтения уменьшает счетчик, кто уменьшил в ноль - удаляет объект из очереди.

Дополнительно контроль/защиту от двойного чтения: например писатель нумерует объекты последовательно, читатель не читает с номерами менее последнего прочитанного.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39030678
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
Дополнительно контроль/защиту от двойного чтения: например писатель нумерует объекты последовательно, читатель не читает с номерами менее последнего прочитанного.
Спасибо..
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39030773
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Защиту от двойного чтения наверное по другому нужно делать. Иначе мы накладываемые серьезные ограничения на систему
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39030775
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя как вариант, можно и так. Можно создать что-нибудь наподобие матрицы смежность, но тогда проверка на то что все прочитали объект будет занимать время O(n), что не очень приятно
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39030782
wst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более примитивные варианты вроде раздачи каких-нибудь shared_ptr в индивидуальные очереди получателей не рассматривались?
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39030783
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bdm77Добрый день!

Есть задачка.
Single-producer получает какой то объект и кладет в queues ,
потом каждый consumer (от 1 до ??) читает из queues .
Но удаляет только тогда, когда каждый consumer прочитал объект.

М.б. кто то решал такое уже?

Заранее спасибо.
С этим хорошо справляется Обзервер паттерн
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39030797
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YesSqlbdm77Добрый день!

Есть задачка.
Single-producer получает какой то объект и кладет в queues ,
потом каждый consumer (от 1 до ??) читает из queues .
Но удаляет только тогда, когда каждый consumer прочитал объект.

М.б. кто то решал такое уже?

Заранее спасибо.
С этим хорошо справляется Обзервер паттерн

Спасибо.
Наверное этот патерн лучше подойдет..
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39030812
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryМожно создать что-нибудь наподобие матрицы смежность, но тогда проверка на то что все прочитали объект будет занимать время O(n), что не очень приятно
Не надо никаких матриц. Да и контроля повторов можно не делать. Достаточно чтобы объекты были в связном списке, т.е. прочитал текущий, получил из текущего ссылку на следующий, уменьшил в текущем счетчик и т.д.
Если текущий первый, то просто ждем когда появится следующий.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39030844
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TSashaMercuryМожно создать что-нибудь наподобие матрицы смежность, но тогда проверка на то что все прочитали объект будет занимать время O(n), что не очень приятно
Не надо никаких матриц. Да и контроля повторов можно не делать. Достаточно чтобы объекты были в связном списке, т.е. прочитал текущий, получил из текущего ссылку на следующий, уменьшил в текущем счетчик и т.д.
Если текущий первый, то просто ждем когда появится следующий.

Ситуация такова: у нас есть библиотека, в ней книги, их количество неизвестно. У нас есть n читателей. Книгу можно выкинуть из библиотеки когда все её прочитают. Я правильно понял ?
Т.е. доступ к любой книге произвольный. Или тут ключевое слова queue ? Тогда задачи тривиальная.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39031748
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SashaMercuryDima Tпропущено...

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

Ситуация такова: у нас есть библиотека, в ней книги, их количество неизвестно. У нас есть n читателей. Книгу можно выкинуть из библиотеки когда все её прочитают. Я правильно понял ?
Т.е. доступ к любой книге произвольный. Или тут ключевое слова queue ? Тогда задачи тривиальная.


Задача такая...
Есть главный объект , который получает с камеры фреймы.
Есть еще один объект, который по сигналу создает N - threads (каждый threads "живет" 400 фреймов) .

Задача - главному объекту передать фрейм каждому thread .
И что бы thread не получил двойной фрейм..

Обзервер паттерн - подходит для этого.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39031786
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку С++ не содержит объектов мультизадачности на уровне language
то обсуждение решения (и его эффективности) неизбежно перетекает
в обсуждение где это будет компилироваться. Windows/Linux.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39031790
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПоскольку С++ не содержит объектов мультизадачности на уровне language
Содержит, начиная с С++11 http://www.cplusplus.com/reference/multithreading/
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39031791
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПоскольку С++ не содержит объектов мультизадачности на уровне language

Последние стандарты, кажется, рассматривают STL с её std::mutex и т.д. как часть языка...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39031792
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пускай автор скажет что у него.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39031844
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonПускай автор скажет что у него.

Компилируем в Win . Но я использую boost , там есть все для multithreads
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39031845
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TmaytonПоскольку С++ не содержит объектов мультизадачности на уровне language
Содержит, начиная с С++11 http://www.cplusplus.com/reference/multithreading/

C++11 вклюл в себя boost
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39032419
aeugen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bdm77Добрый день!

Есть задачка.
Single-producer получает какой то объект и кладет в queues ,
потом каждый consumer (от 1 до ??) читает из queues .
Но удаляет только тогда, когда каждый consumer прочитал объект.

М.б. кто то решал такое уже?



А задача тестовая или реальная???

Если реальная, то зачем изобретать велосипед???
Для реальной задачи есть куча готовых решений, ZeroC , AMQ (искать по слову topic) и прочие MQ.

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

Есть задачка.
Single-producer получает какой то объект и кладет в queues ,
потом каждый consumer (от 1 до ??) читает из queues .
Но удаляет только тогда, когда каждый consumer прочитал объект.

М.б. кто то решал такое уже?



А задача тестовая или реальная???

Если реальная, то зачем изобретать велосипед???
Для реальной задачи есть куча готовых решений, ZeroC , AMQ (искать по слову topic) и прочие MQ.

Исходники для них в инете валяются, можно посмотреть как реализовано.
1. подобные системы часто не делают глубокого копирования. Из за этого приходится гнать все данные в сообщении. Сразу же встает вопрос пропускной способности. и вообще способности прокачивать большие сообщения. особенно в разрезе вопроса ТС.
2. переусложнены для такого типа задачь.
3. + еще масса вопросов
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39032715
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OoCcaeugenпропущено...


А задача тестовая или реальная???

Если реальная, то зачем изобретать велосипед???
Для реальной задачи есть куча готовых решений, ZeroC , AMQ (искать по слову topic) и прочие MQ.

Исходники для них в инете валяются, можно посмотреть как реализовано.
1. подобные системы часто не делают глубокого копирования. Из за этого приходится гнать все данные в сообщении. Сразу же встает вопрос пропускной способности. и вообще способности прокачивать большие сообщения. особенно в разрезе вопроса ТС.
2. переусложнены для такого типа задачь.
3. + еще масса вопросов


Задача реальная!

в данном случае поток видео, минимум 1280 Х 720 (требуют full HD) , частой 10 Гц.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39032800
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39033324
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bdm77Есть задачка.
Single-producer получает какой то объект и кладет в queues ,
потом каждый consumer (от 1 до ??) читает из queues .
Но удаляет только тогда, когда каждый consumer прочитал объект.
Тут правильно написано: queue s - очереди во множественном числе. Нужно именно несколько очередей - по одной у каждого consumer'а. Producer кладёт объекты во все очереди, а consumer'ы работают каждый только со своей. Таким образом не нужен счётчик, сколько consumer'ов прочитали объект.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39033335
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikНужно именно несколько очередей - по одной у каждого consumer'а. Producer кладёт объекты во все очереди, а consumer'ы работают каждый только со своей.
Если учесть что
bdm77в данном случае поток видео, минимум 1280 Х 720 (требуют full HD) , частой 10 Гц.
то получается очень неэкономное использование памяти: 1 кадр full HD в растре занимает ~6 Мб, 10 кадров для 10 подписчиков = 600 Мб.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39033344
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TpetalvikНужно именно несколько очередей - по одной у каждого consumer'а. Producer кладёт объекты во все очереди, а consumer'ы работают каждый только со своей.
Если учесть что
bdm77в данном случае поток видео, минимум 1280 Х 720 (требуют full HD) , частой 10 Гц.
то получается очень неэкономное использование памяти: 1 кадр full HD в растре занимает ~6 Мб, 10 кадров для 10 подписчиков = 600 Мб.
Кадры никуда не двигаются. в очереди ставятся только смарт поинтеры. Как замечено выше для этого и нужно deep copy в очередях.
...
Рейтинг: 0 / 0
Single-producer/multi-consumer queues
    #39033370
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обработка ошибок в такой очереди будет весьма крепким орешком, однако...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Single-producer/multi-consumer queues
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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