Задумался, как можно на максимум упростить общение 2-х и более программ (особенность в том что хотелось сделать что то типо внешних модулей для обработки данных, как в контейнер подаём, забираем данные, но при этом надо не нагружать текущую программу с которой подаются и принимаются данные. DLL не подходит, если в ней произойдёт критическая ошибка, то краш всего что есть. Может уже есть что то такое интересное, которое может работать как контейнер в схеме и при этом после запуска основной программы контейнер будет работать в отдельном процессе, после чего, при критических ошибках можно будет перезапустить этот модуль без перезагрузки основной программы)
Для примера на практике можно взять простой сервер к которому будут подключатся клиенты и отсылать данные для обработки, данных для обработки может поступать достаточно много и потребуется сделать либо TCPServerEx либо простой сервер но с мультиконтейнером, после чего оба варианта будут создавать габаритные схемы в памяти после чего от большой нагрузки сервер умирает, дабы решить смерть сервера, можно разбивать схему на более мелкие которые будут распределять нагрузку равномерно не вызывая сбоев.
придумал вот так:
code_36748.txt
Только проблема есть в том что данные передаваемые через это дело могут содержать Разделитель который учавствует в разложении и образовании МТ потока
Этот топик читают: Гость
Ответов: 1343
Рейтинг: 31
|
|||
карма: 2 |
| ||
файлы: 1 | code_36748.txt [1.2KB] [262] |
Ответов: 2059
Рейтинг: 132
|
|||
Rysik,
Если использовать anonymous pipes для прокладки труб StdIn/StdOut к дочернему процессу? ...или именованные, только мне кажется, что с именованными более громоздко получится. В общем перенаправлять каналы ввода вывода. Правда IC надо рисовать. после чего, при критических ошибках можно будет перезапустить этот модуль Если задействовать третью трубу - StdError, то и перезапускать наверное не надо будет. Пайп в Windows - это просто один из методов коммуникации между процессами. "Пайп - это коммуникационный шлюз с двумя концами; некий процесс через дескриптор (handle) на одном конце пайпа может передавать данные другому процессу, находящемуся на другом конце пайпа." |
|||
карма: 6 |
|
Ответов: 1926
Рейтинг: 172
|
|||
Rysik писал(а): Только проблема есть в том что данные передаваемые через это дело могут содержать Разделитель который учавствует в разложении и образовании МТ потокаИспользуй в качестве разделителя табуляцию:
Или можно использовать эти компоненты вместо MT:
StreamPack StreamUnPack |
|||
карма: 9 |
| ||
Голосовали: | Rysik |
Ответов: 1343
Рейтинг: 31
|
|||
3042 писал(а): Или можно использовать эти компонентыТочно, можно же использовать другие типы данных ------------ Дoбавленo в 22.11: Рузальтат:
|
|||
карма: 2 |
|
4