Russian Qt Forum
Ноябрь 22, 2024, 22:35
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Многопоточное программирование, процессы
>
QSharedMemory QReadWriteLock
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QSharedMemory QReadWriteLock (Прочитано 12612 раз)
vulko
Гость
Re: QSharedMemory QReadWriteLock
«
Ответ #15 :
Ноябрь 06, 2014, 12:08 »
Цитата: ammaximus от Ноябрь 05, 2014, 14:31
Да, такое условие. Решается задача повышения надежности - есть процесс-родитель (диспетчер) он следит за состоянием процессов и восстанавливает их в случае вылета. Не знаю, насколько этот подход правильный, но пока менять его не будем.
интересный подход к надежности...)))
Записан
ammaximus
Гость
Re: QSharedMemory QReadWriteLock
«
Ответ #16 :
Ноябрь 06, 2014, 13:16 »
Цитировать
интересный подход к надежности...)))
Каждый процесс связан с отдельным внешним устройством, которые могут повести себя неадекватно и всего не предусмотришь. Поэтому отказ одного модуля не должен приводить к краху системы в целом.
Я предлагал многопоточную реализацию, но у нас что-то присосались к этой системе и изменить это не выходит. Там нюанс в том, что любой процесс может находится на любой машине в пределах локальной сети и он общается с другими через сокет. Пока допилю это, потом будем искать лучшее решение.
Записан
vulko
Гость
Re: QSharedMemory QReadWriteLock
«
Ответ #17 :
Ноябрь 06, 2014, 13:20 »
Цитата: ammaximus от Ноябрь 06, 2014, 13:16
Цитировать
интересный подход к надежности...)))
Каждый процесс связан с отдельным внешним устройством, которые могут повести себя неадекватно и всего не предусмотришь. Поэтому отказ одного модуля не должен приводить к краху системы в целом.
Я предлагал многопоточную реализацию, но у нас что-то присосались к этой системе и изменить это не выходит. Там нюанс в том, что любой процесс может находится на любой машине в пределах локальной сети и он общается с другими через сокет. Пока допилю это, потом будем искать лучшее решение.
ну если данных не так много, то можно и сокеты.
а вообще многопоточное решение вполне рабочее, то что устройства могут повести себя неадекватно, можно в общем то предусмотреть, чтобы потоки не отваливались... но это если производительности через сокеты не хватит.
мне кажется по локалке вполне будет достаточно.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QSharedMemory QReadWriteLock
«
Ответ #18 :
Ноябрь 06, 2014, 13:29 »
Цитата: ammaximus от Ноябрь 06, 2014, 13:16
Я предлагал многопоточную реализацию, но у нас что-то присосались к этой системе и изменить это не выходит.
Не раз видел обратную ситуацию (хотят процессы вместо потоков). Процесс можно прибить, а вот поток нет
Записан
ammaximus
Гость
Re: QSharedMemory QReadWriteLock
«
Ответ #19 :
Ноябрь 06, 2014, 18:13 »
Есть у процессов некое преимущество, и даже их медлительность при переключении для нас не критична. Меня лишь огорчает необходимость изобретать велосипеды. Сегодня весь день убил на аналог вектора с форычем и еще не факт, что все правильно.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: QSharedMemory QReadWriteLock
«
Ответ #20 :
Ноябрь 06, 2014, 18:42 »
Цитата: ammaximus от Ноябрь 06, 2014, 18:13
и даже их медлительность при переключении для нас не критична.
Нет у них никакой медлительности.
В linux процессы переключаются с той же скоростью, что и потоки. Точнее потоки в linux, это те-же процессы, которые делят одно адресное пространство.
И подход с процессами правильный, в дальнейшем вы много полезного сможете получить.
«
Последнее редактирование: Ноябрь 06, 2014, 18:44 от Old
»
Записан
VPS
Гость
Re: QSharedMemory QReadWriteLock
«
Ответ #21 :
Ноябрь 06, 2014, 20:11 »
Цитата: ammaximus от Ноябрь 06, 2014, 18:13
Сегодня весь день убил на аналог вектора с форычем и еще не факт, что все правильно.
Вроде как библиотека Boost.Interprocess имеет свои реализации контейнеров для использования их в разделяемой памяти.
Записан
ammaximus
Гость
Re: QSharedMemory QReadWriteLock
«
Ответ #22 :
Ноябрь 06, 2014, 23:36 »
Цитировать
И подход с процессами правильный, в дальнейшем вы много полезного сможете получить.
Спасибо, очень хотел услышать подобное))
Цитировать
Вроде как библиотека Boost.Interprocess имеет свои реализации контейнеров для использования их в разделяемой памяти.
Уже выбрана Qt, придется обойтись ее средствами. Но я подгляжу как там у них)
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QSharedMemory QReadWriteLock
«
Ответ #23 :
Ноябрь 07, 2014, 11:04 »
Цитата: ammaximus от Ноябрь 06, 2014, 18:13
Меня лишь огорчает необходимость изобретать велосипеды. Сегодня весь день убил на аналог вектора с форычем и еще не факт, что все правильно.
А нужны ли такие хитрости? Можно держать в шаред простые массивы, напр "счетчик" и дальше следуют элементы. Что-то более сложное - сериализовать. При обращении к шаред прочитать данные (де-сериализовать), сразу же освободить шаред, и потом, в "своей" памяти, спокойно разбираться. Если массив(ы) трудно зарезервировать по максимуму, то создавать для него новый (отдельный) шаред блок при перезаписи.
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...