powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / контейнеры STL и многопоточность
25 сообщений из 85, страница 3 из 4
контейнеры STL и многопоточность
    #34576335
_maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OLEG_2005Все-таки не понятно насчёт пайпа. Один поток пишет в контейнер, другой читает. Т.е. читающие или пишуще потоки монопольно захватывают контейнер или в чём фокус?операционная система прозрачно синхронизирует доступ или вообще всё может параллельно происходить.
OLEG_2005А в методе двойной буферизации надо как заполняются буфера для записи и для чтения?буфер заполняется как обычно, как ты их там заполняешь? Методом add наверно.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34576694
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_maXmo OLEG_2005Все-таки не понятно насчёт пайпа. Один поток пишет в контейнер, другой читает. Т.е. читающие или пишуще потоки монопольно захватывают контейнер или в чём фокус?операционная система прозрачно синхронизирует доступ или вообще всё может параллельно происходить.
OLEG_2005А в методе двойной буферизации надо как заполняются буфера для записи и для чтения?буфер заполняется как обычно, как ты их там заполняешь? Методом add наверно.

Как добиться идентичности данных в буфере для записи и для чтения? И что даёт наличие двух буферов?
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34576952
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005
Все-таки не понятно насчёт пайпа. Один поток пишет в контейнер, другой читает. Т.е. читающие или пишуще потоки монопольно захватывают контейнер или в чём фокус?
А в методе двойной буферизации надо как заполняются буфера для записи и для чтения?

Ответ на вопрос что использовать лучше можно дать только после того как
выяснится:

1. Среднее количество обращений( на чтение и изменение) к одному элементу
контейнера за весь цикл обработки.
2. Логическая зависимось элементов между собой.
3. Влияние изменения значения конкретного элемента на конечный результат.



Еще как вариант к рассмотрению , можно разбить контейнер на несколько, каждый из которых будет обрабатываться одной нитью, при необходимости получения доступа к элементу из другой нити, нить хозяйка будет выдавать доступ через указатель(ссылку) или делать копию, учитывая это при собственных вычислениях.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34577816
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- OLEG_2005
Все-таки не понятно насчёт пайпа. Один поток пишет в контейнер, другой читает. Т.е. читающие или пишуще потоки монопольно захватывают контейнер или в чём фокус?
А в методе двойной буферизации надо как заполняются буфера для записи и для чтения?

Ответ на вопрос что использовать лучше можно дать только после того как
выяснится:

1. Среднее количество обращений( на чтение и изменение) к одному элементу
контейнера за весь цикл обработки.
2. Логическая зависимось элементов между собой.
3. Влияние изменения значения конкретного элемента на конечный результат.



Еще как вариант к рассмотрению , можно разбить контейнер на несколько, каждый из которых будет обрабатываться одной нитью, при необходимости получения доступа к элементу из другой нити, нить хозяйка будет выдавать доступ через указатель(ссылку) или делать копию, учитывая это при собственных вычислениях.

Непонятно, что вы подразумеваете под пунктом 3. А среднее количество обращения определить трудно, так как будет зависеть от загрузки программы (количества клиентских программ, которым выдаются данные и количеств опрашиваемых подсистем съёма данных).
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34577916
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Как добиться идентичности данных в буфере для записи и для чтения?что запишешь, то и будет прочитано, или тебе что-то другое надо… Расскажи-ка получше про необходимость идентичности. Что ты хотел этим сказать?

OLEG_2005И что даёт наличие двух буферов?потокобезопасность.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34577924
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а то молчишь как на допросе в ЦРУ.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34578053
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo OLEG_2005Как добиться идентичности данных в буфере для записи и для чтения?что запишешь, то и будет прочитано, или тебе что-то другое надо… Расскажи-ка получше про необходимость идентичности. Что ты хотел этим сказать?

OLEG_2005И что даёт наличие двух буферов?потокобезопасность.

Я просто не понял идею с двум буферами. Есть контейнер, который разные потоки могут читать и могут писать в него. Что вы имели в виду, говоря о буфере для записи и для чтения.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34578070
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005
А среднее количество обращения определить трудно, так как будет зависеть от загрузки программы (количества клиентских программ, которым выдаются данные и количеств опрашиваемых подсистем съёма данных).

С этого места пожалуйста поподробнее.
Есть у меня подозрение, что во время написания вы сами поймете что имелось ввиду под п3.

А может все данные можно положить в таблицы СУБД и не париться.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34578109
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- OLEG_2005
А среднее количество обращения определить трудно, так как будет зависеть от загрузки программы (количества клиентских программ, которым выдаются данные и количеств опрашиваемых подсистем съёма данных).

С этого места пожалуйста поподробнее.


Можете начать с того какая прикладная(логическая) сущность будет
храниться в качестве ключа Вашего map.

А может map выбран только как автоматический сортировщик.
И вы собираетесь за каждой итераций проходиться по нему полностью?
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34578408
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Я просто не понял идею с двум буферами. Есть контейнер, который разные потоки могут читать и могут писать в него. Что вы имели в виду, говоря о буфере для записи и для чтения.сейчас ты используешь один контейнер = один буфер, из чего логично возникает проблема синхронизации, если использовать два буфера (по одному на поток) и синхронизировать только их обмен по некоторому критерию, проблема слабеет. Или ещё подробнее рассказывать?

молчит, гирой…
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34578413
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat-А может map выбран только как автоматический сортировщик.
И вы собираетесь за каждой итераций проходиться по нему полностью?возможно, он их периодически перебирает на предмет изменений и на изменения реагирует??? хз…
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34578539
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo
хз…


Дествительно хз.

В этом случае изменения лучше указатели на измененные обьекты хранить в отдельном
list, map | vector.
А в основном map хранить ключ быстрого поиска и указатель на обьект.

Хотя могут быть варианты с п.3, если это влияние существенно и при изменении
нужно пробежаться по всем обьектам снова.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34579799
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- OLEG_2005
А среднее количество обращения определить трудно, так как будет зависеть от загрузки программы (количества клиентских программ, которым выдаются данные и количеств опрашиваемых подсистем съёма данных).

С этого места пожалуйста поподробнее.
Есть у меня подозрение, что во время написания вы сами поймете что имелось ввиду под п3.

А может все данные можно положить в таблицы СУБД и не париться.

Сразу писать в таблицы СУБД нельзя. В контейнере у меня хранятся значения аналоговых и дискретных сигналов, которые я получаю от подсистемы сбора данных. Периодическия по данным контейнера я выполняю расчёт и помещаю их в БД (архивирую данные). В контейнере хранятся текущие данные аналоговых и дискретных данных, их также нужно выдавать клиентским программам, например программе рабочего места диспетчера.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34579817
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- onstat- OLEG_2005
А среднее количество обращения определить трудно, так как будет зависеть от загрузки программы (количества клиентских программ, которым выдаются данные и количеств опрашиваемых подсистем съёма данных).

С этого места пожалуйста поподробнее.


Можете начать с того какая прикладная(логическая) сущность будет
храниться в качестве ключа Вашего map.

А может map выбран только как автоматический сортировщик.
И вы собираетесь за каждой итераций проходиться по нему полностью?

Для хранения текуших данны у меня два контейнера map. Один для хранения текущих аналоговых данных, другой для хранения текущих дискретных данных. В качестве ключа в обоих случаях выступает идентификатор входа (целочисленное значение), ну а данные - значения сигналов, признак достоверности и т.д. Когда данные получаю от подсистемы сбора данных, я обновляю эемент контейнера map примерно так currentTi[id] = data. Так как поиск в контейнере map пропопрционален log числа элементов, то данная оперция должна выполняться достаточно быстро. Вот доступ к этому контейнеру и надо синхронизировать. В нему могут обращаться и потоки приёма данных от подсистемы сбора данных, поток, выполняющий архивирование - периодический расчёт средних значений ТИ и запись их в БД, потоки выдачи данных клиентским программам.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34579826
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo OLEG_2005Я просто не понял идею с двум буферами. Есть контейнер, который разные потоки могут читать и могут писать в него. Что вы имели в виду, говоря о буфере для записи и для чтения.сейчас ты используешь один контейнер = один буфер, из чего логично возникает проблема синхронизации, если использовать два буфера (по одному на поток) и синхронизировать только их обмен по некоторому критерию, проблема слабеет. Или ещё подробнее рассказывать?

молчит, гирой…

Хорошо было бы ещё подробнее. Непонятно, как в моём случае два буфера решат проблему. Непонятно, какие потоки с какими буферами работают и как происходит обмен информации между буферами, копирование информации из одного буфера в другой довольно трудоёмкая операция или я неправ?
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34580133
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- maXmo
хз…


Дествительно хз.

В этом случае изменения лучше указатели на измененные обьекты хранить в отдельном
list, map | vector.
А в основном map хранить ключ быстрого поиска и указатель на обьект.

Хотя могут быть варианты с п.3, если это влияние существенно и при изменении
нужно пробежаться по всем обьектам снова.

А насколько просто хранить указатели в контейнерах stl?
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34581611
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё интересно, как обычно поступают для создания потоконезависимых контейнеров данных: инкапсулируют синхронизацию на уровне объекта или класс не делают потоконезависимым, а объекты, которые используют данные хранилища, ответственны за синхронизацию.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34581614
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё интересно, как обычно поступают для создания потоконезависимых контейнеров данных: инкапсулируют синхронизацию на уровне объекта или класс не делают потоконезависимым, а объекты, которые используют данные хранилища, ответственны за синхронизацию?
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34583420
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Когда данные получаю от подсистемы сбора данных, я обновляю эемент контейнера map примерно так currentTi[id] = data.мне представляется, что на первой итерации ты заполнишь свой контейнер и далее число элементов в нём увеличиваться не будет совсем или крайне редко. Не так?
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34585533
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo OLEG_2005Когда данные получаю от подсистемы сбора данных, я обновляю эемент контейнера map примерно так currentTi[id] = data.мне представляется, что на первой итерации ты заполнишь свой контейнер и далее число элементов в нём увеличиваться не будет совсем или крайне редко. Не так?

Да. Из базы я считываю список аналоговых и дискретных сигналов, которые будут обновляться от подсистемы сбора данных. Во время работы происходит изменения значений.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34586316
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и чего тогда синхронизовать, если контейнер практически никогда не меняется? Вот если ты боишься, что данные обновляешь как-то неатомарно… тут надо смотреть.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34586366
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoи чего тогда синхронизовать, если контейнер практически никогда не меняется? Вот если ты боишься, что данные обновляешь как-то неатомарно… тут надо смотреть.

Проблема в том, что несколько потоков могут одновременно изменять данные и читать. Некоторые потоки периодически обходят контейнеры, выполняя расчёты, выдавая данные, другие получив данные из сети обновляют данные контейнеров.
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34586381
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как лучше синхронизировать доступ к контейнеру, инкапсулировать синхронизацию в классе котнейнера или отдать синхронизацию на откуп классам использущим эти контейнеры?
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34586391
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно пояснить идею с двумя буферами? Не понятен суть метода. Есть потоки, которые обходят весь контейнер периодически, не очень здорово, если во вреямя обхода доступ к контейнеру заблокируется?
...
Рейтинг: 0 / 0
контейнеры STL и многопоточность
    #34586523
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Проблема в том, что несколько потоков могут одновременно изменять данные и читать. Некоторые потоки периодически обходят контейнеры, выполняя расчёты, выдавая данные, другие получив данные из сети обновляют данные контейнеров.видишь ли, контейнер к этому уже отношения не имеет, т.к. он не будет твоему коду мешать работать, и если твой код требует какой-то синхронизации, тебе следует это требование сформулировать и реализовать и тип синхронизации будет полностью зависеть от этих требований.

OLEG_2005Можно пояснить идею с двумя буферами?можно, если скажешь, что пояснять.
...
Рейтинг: 0 / 0
25 сообщений из 85, страница 3 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / контейнеры STL и многопоточность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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