powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Межпроцессное взаимодействие - что быстрее?
9 сообщений из 109, страница 5 из 5
Межпроцессное взаимодействие - что быстрее?
    #39754456
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Малыхин СергейА как же разделяемая память? https://www.google.ru/search?q=shared memory&oq=shared &aqs=chrome.2.69i57j0l5.10823j0j7&sourceid=chrome&ie=UTF-8
Что то быстрее сложно придумать =)

А есть одна в Windows ?
Вместо неё Memory-mapped files.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39754513
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДавайте в качестве пятничной темы. Рассмотрим memory-map (mmap). В качестве points:

1) Размер страницы? Везде-ли 4к?
2) Ограничения. Сколько можно выделить.
3) Реализации в Windows/Unix
4) Практическое применение кроме традиционного (загрузка кода). SQLite? Другие DBMS?
5) Бенчмарки. Оптимизации.

Пока - предложения по вопросам. А топик я форкну отдельно.
1. Если не путаю это аппаратно определяется, но вроде везде страница 4К

С практическим применением проблема. Лично я не могу придумать реальную задачу для межпроцессного обмена. Тут есть одно сильное ограничение: все процессы должны быть на одном компе. А при соединении через tcp или пайпы такой проблемы нет.
С другой стороны если процессы должны много и часто обмениваться, то почему бы тогда не собрать их в один процесс, так гораздо быстрее будет работать.

В общем круг задач очень узок для такого инструмента. Например файл-серверные СУБД используемые преимущественно в пределах одного компа, т.е. SQLite. В SQLite это уже встроено.
MS SQL тоже может использовать.

Я использовал мапинг для рандомного чтения файла, чтобы не заморачиваться с постоянным перемещением указателя. Но как тесты показали чтение файла классическим способом работает быстрее.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39754523
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TС другой стороны если процессы должны много и часто обмениваться, то почему бы тогда не собрать их в один процесс, так гораздо быстрее будет работать.

Например, если процессы под разные архитектуры. Пример из личной практики. Приложение десктопное x64 для обработки видео,
всё как положено, поддерживает разные форматы видео. Тут вдруг появилась нужда поддержать .mov-формат (QuickTime) на Windows
и macOS. Оказалось, что кодеки QuickTime являются только 32-разрядными. Запилили отдельный процесс под i386 дабы он грузил
видео с помощью кодеков и уже к нему обращаться за получением конкретных фреймов видео по обычным пайпам.
Уверен, что сейчас эту проблему можно решить другими средствами, без привлечения IPC.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39754544
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ использовал мапинг для рандомного чтения файла, чтобы не заморачиваться с постоянным перемещением указателя. Но как тесты показали чтение файла классическим способом работает быстрее.
Это интересный для меня поинт. Вот хотелось-бы бенчмарк и обсудить.
В основном в виде сравнения.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39754555
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВот хотелось-бы бенчмарк и обсудить.
В основном в виде сравнения.
Уже
Исходники 18162869
Результаты 18163841 18163854
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39754567
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonВот хотелось-бы бенчмарк и обсудить.
В основном в виде сравнения.
Уже
Исходники 18162869
Результаты 18163841 18163854
Это не то что я хотел. Тоесть мой юзкейс другой. Не к текстовой замене.
А больше к случайному дотупу к произвольному смещению. И в разрезе
чтений и записей. И чтений-записей.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39754634
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton1) Размер страницы? Везде-ли 4к?
2) Ограничения. Сколько можно выделить.
3) Реализации в Windows/Unix
4) Практическое применение кроме традиционного (загрузка кода). SQLite? Другие DBMS?
5) Бенчмарки. Оптимизации.


1) нет.
2) имхо упирается от процента свободной памяти на писюке... давно было дело - но около 70% кажется. это форточки. но окно делать большим - задач таких нема. везде до или после идёт фрагментация и её обработка.
3) ээээээ опыт по форточкам. в линуксе сильно не приходилось
4) а) свой движок объектной БД. б) логгирование. =анализ, поиск,фильтрация,само логирование. нужно логирование - запускается второй процесс. не нужен - не запускается. при этом тратиться в релизе только cakk/ret . Кстати говоря там stl - зло от слова совсем. Сплошной буффер, но хитро устроенный. Блокировка не на весь а только на управляющую инфу. Скорострельность самая шустрая выходит. в) предотвращение повторного запуска приложения(только если путь запуска совпадает)
5) уже выше отчасти сказал - правильный код по синхронизации, копированию и распределению данных в шаред-памяти.

удачи вам
(круглый)
ЗЫ
Тут прозвучали пайпы. Сразу предупреждаю об глюке который был на срез 2008 где то года в форточках. Как сейчас - хз, давно не проверял. Там есть один нюанс. Если пайпу планируется использовать как синхронизацию между асинхронными процессами - то там есть мёртвая зона при одновременном создании пайпы и ожидании её подъёма, когда она отвечает о создании ожидающей процессу, при этом она ещё не готова для прогона данных(будут потери). Проявляется при интенсивной нагрузке только, плавающая. Лечение - после установления физического контакта, прогнать логическую синхронизацию. От осей помойму не зависит (WIN32 имеется ввиду).
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39754935
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если писать какие-то процессы в виде DLL с заранее оговорённым интерфейсом взаимодействия, которые будут крутится внутри одного EXE, как это, к примеру, происходит с некоторыми службами Windows под svchost.exe, то проблема межпроцессного взаимодействия сводится к тривиальному вызову API функции одной DLL из другой с передачей параметров. Тут надо только определить кто и как будет подчищать память и как эту память выделять в случае, когда одна DLL'ка освобождает память, запрошенную из другой DLL'ки. К примеру, для таких случаев выделением памяти может заниматься какая-то третья DLL, экспортирующая функции выделения и освобождения памяти на своей куче.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39754938
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devЕсли писать какие-то процессы в виде DLL с заранее оговорённым интерфейсом взаимодействия,
которые будут крутится внутри одного EXE

....то межпроцессные взаимодействия отсутствуют как класс.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
9 сообщений из 109, страница 5 из 5
Форумы / C++ [игнор отключен] [закрыт для гостей] / Межпроцессное взаимодействие - что быстрее?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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