Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть задачка. Single-producer получает какой то объект и кладет в queues , потом каждый consumer (от 1 до ??) читает из queues . Но удаляет только тогда, когда каждый consumer прочитал объект. М.б. кто то решал такое уже? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:05 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Добавь счетчик к объекту. Задавай счетчиком количество читателей, каждый после прочтения уменьшает счетчик, кто уменьшил в ноль - удаляет объект из очереди. Дополнительно контроль/защиту от двойного чтения: например писатель нумерует объекты последовательно, читатель не читает с номерами менее последнего прочитанного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:20 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Dima T Дополнительно контроль/защиту от двойного чтения: например писатель нумерует объекты последовательно, читатель не читает с номерами менее последнего прочитанного. Спасибо.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:42 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Защиту от двойного чтения наверное по другому нужно делать. Иначе мы накладываемые серьезные ограничения на систему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 14:59 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Хотя как вариант, можно и так. Можно создать что-нибудь наподобие матрицы смежность, но тогда проверка на то что все прочитали объект будет занимать время O(n), что не очень приятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:01 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Более примитивные варианты вроде раздачи каких-нибудь shared_ptr в индивидуальные очереди получателей не рассматривались? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:04 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
bdm77Добрый день! Есть задачка. Single-producer получает какой то объект и кладет в queues , потом каждый consumer (от 1 до ??) читает из queues . Но удаляет только тогда, когда каждый consumer прочитал объект. М.б. кто то решал такое уже? Заранее спасибо. С этим хорошо справляется Обзервер паттерн ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:05 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
YesSqlbdm77Добрый день! Есть задачка. Single-producer получает какой то объект и кладет в queues , потом каждый consumer (от 1 до ??) читает из queues . Но удаляет только тогда, когда каждый consumer прочитал объект. М.б. кто то решал такое уже? Заранее спасибо. С этим хорошо справляется Обзервер паттерн Спасибо. Наверное этот патерн лучше подойдет.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:15 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
SashaMercuryМожно создать что-нибудь наподобие матрицы смежность, но тогда проверка на то что все прочитали объект будет занимать время O(n), что не очень приятно Не надо никаких матриц. Да и контроля повторов можно не делать. Достаточно чтобы объекты были в связном списке, т.е. прочитал текущий, получил из текущего ссылку на следующий, уменьшил в текущем счетчик и т.д. Если текущий первый, то просто ждем когда появится следующий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:23 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryМожно создать что-нибудь наподобие матрицы смежность, но тогда проверка на то что все прочитали объект будет занимать время O(n), что не очень приятно Не надо никаких матриц. Да и контроля повторов можно не делать. Достаточно чтобы объекты были в связном списке, т.е. прочитал текущий, получил из текущего ссылку на следующий, уменьшил в текущем счетчик и т.д. Если текущий первый, то просто ждем когда появится следующий. Ситуация такова: у нас есть библиотека, в ней книги, их количество неизвестно. У нас есть n читателей. Книгу можно выкинуть из библиотеки когда все её прочитают. Я правильно понял ? Т.е. доступ к любой книге произвольный. Или тут ключевое слова queue ? Тогда задачи тривиальная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:35 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima Tпропущено... Не надо никаких матриц. Да и контроля повторов можно не делать. Достаточно чтобы объекты были в связном списке, т.е. прочитал текущий, получил из текущего ссылку на следующий, уменьшил в текущем счетчик и т.д. Если текущий первый, то просто ждем когда появится следующий. Ситуация такова: у нас есть библиотека, в ней книги, их количество неизвестно. У нас есть n читателей. Книгу можно выкинуть из библиотеки когда все её прочитают. Я правильно понял ? Т.е. доступ к любой книге произвольный. Или тут ключевое слова queue ? Тогда задачи тривиальная. Задача такая... Есть главный объект , который получает с камеры фреймы. Есть еще один объект, который по сигналу создает N - threads (каждый threads "живет" 400 фреймов) . Задача - главному объекту передать фрейм каждому thread . И что бы thread не получил двойной фрейм.. Обзервер паттерн - подходит для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 16:07 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Поскольку С++ не содержит объектов мультизадачности на уровне language то обсуждение решения (и его эффективности) неизбежно перетекает в обсуждение где это будет компилироваться. Windows/Linux. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 16:49 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
maytonПоскольку С++ не содержит объектов мультизадачности на уровне language Содержит, начиная с С++11 http://www.cplusplus.com/reference/multithreading/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 16:53 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
maytonПоскольку С++ не содержит объектов мультизадачности на уровне language Последние стандарты, кажется, рассматривают STL с её std::mutex и т.д. как часть языка... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 16:54 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Пускай автор скажет что у него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 16:55 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
maytonПускай автор скажет что у него. Компилируем в Win . Но я использую boost , там есть все для multithreads ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 17:40 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonПоскольку С++ не содержит объектов мультизадачности на уровне language Содержит, начиная с С++11 http://www.cplusplus.com/reference/multithreading/ C++11 вклюл в себя boost ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 17:41 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
bdm77Добрый день! Есть задачка. Single-producer получает какой то объект и кладет в queues , потом каждый consumer (от 1 до ??) читает из queues . Но удаляет только тогда, когда каждый consumer прочитал объект. М.б. кто то решал такое уже? А задача тестовая или реальная??? Если реальная, то зачем изобретать велосипед??? Для реальной задачи есть куча готовых решений, ZeroC , AMQ (искать по слову topic) и прочие MQ. Исходники для них в инете валяются, можно посмотреть как реализовано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 14:43 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
aeugenbdm77Добрый день! Есть задачка. Single-producer получает какой то объект и кладет в queues , потом каждый consumer (от 1 до ??) читает из queues . Но удаляет только тогда, когда каждый consumer прочитал объект. М.б. кто то решал такое уже? А задача тестовая или реальная??? Если реальная, то зачем изобретать велосипед??? Для реальной задачи есть куча готовых решений, ZeroC , AMQ (искать по слову topic) и прочие MQ. Исходники для них в инете валяются, можно посмотреть как реализовано. 1. подобные системы часто не делают глубокого копирования. Из за этого приходится гнать все данные в сообщении. Сразу же встает вопрос пропускной способности. и вообще способности прокачивать большие сообщения. особенно в разрезе вопроса ТС. 2. переусложнены для такого типа задачь. 3. + еще масса вопросов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 16:39 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
OoCcaeugenпропущено... А задача тестовая или реальная??? Если реальная, то зачем изобретать велосипед??? Для реальной задачи есть куча готовых решений, ZeroC , AMQ (искать по слову topic) и прочие MQ. Исходники для них в инете валяются, можно посмотреть как реализовано. 1. подобные системы часто не делают глубокого копирования. Из за этого приходится гнать все данные в сообщении. Сразу же встает вопрос пропускной способности. и вообще способности прокачивать большие сообщения. особенно в разрезе вопроса ТС. 2. переусложнены для такого типа задачь. 3. + еще масса вопросов Задача реальная! в данном случае поток видео, минимум 1280 Х 720 (требуют full HD) , частой 10 Гц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 18:52 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 00:34 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
bdm77Есть задачка. Single-producer получает какой то объект и кладет в queues , потом каждый consumer (от 1 до ??) читает из queues . Но удаляет только тогда, когда каждый consumer прочитал объект. Тут правильно написано: queue s - очереди во множественном числе. Нужно именно несколько очередей - по одной у каждого consumer'а. Producer кладёт объекты во все очереди, а consumer'ы работают каждый только со своей. Таким образом не нужен счётчик, сколько consumer'ов прочитали объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 16:14 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
petalvikНужно именно несколько очередей - по одной у каждого consumer'а. Producer кладёт объекты во все очереди, а consumer'ы работают каждый только со своей. Если учесть что bdm77в данном случае поток видео, минимум 1280 Х 720 (требуют full HD) , частой 10 Гц. то получается очень неэкономное использование памяти: 1 кадр full HD в растре занимает ~6 Мб, 10 кадров для 10 подписчиков = 600 Мб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 16:22 |
|
||
|
Single-producer/multi-consumer queues
|
|||
|---|---|---|---|
|
#18+
Dima TpetalvikНужно именно несколько очередей - по одной у каждого consumer'а. Producer кладёт объекты во все очереди, а consumer'ы работают каждый только со своей. Если учесть что bdm77в данном случае поток видео, минимум 1280 Х 720 (требуют full HD) , частой 10 Гц. то получается очень неэкономное использование памяти: 1 кадр full HD в растре занимает ~6 Мб, 10 кадров для 10 подписчиков = 600 Мб. Кадры никуда не двигаются. в очереди ставятся только смарт поинтеры. Как замечено выше для этого и нужно deep copy в очередях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 16:26 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=44&tid=2018871]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 150ms |

| 0 / 0 |
