Использование другого механизма IPC - PullRequest
6 голосов
/ 31 января 2011

Я программист на С ++.

Мне хотелось узнать сценарий реального времени, в котором мы можем использовать различные механизмы IPC, такие как PIPE / Named, Shared Memory.

Я примерно знаю, где я могу использовать сокет и очередь сообщений. Но для ТРУБЫ / Именованной ТРУБЫ и разделяемой памяти я не понимаю.

Это просто для понимания различных механизмов IPC и их использования.

Спасибо

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Мне нужно было использовать именованный канал для связи с моей Erlang Vitual Machine, которая работала как демон.

Я полагаю, что они медленно заменяются "парами сокетов", поскольку они обеспечивают двунаправленную связь в отличие от каналов, которые являются однонаправленными, только если мы не создадим два разных канала.большие серверные приложения, так как это будет самый быстрый из всех других механизмов в многопроцессорной системе, но обычно их трудно реализовать правильным образом.

И использование сокетов становится необходимым только тогда, когда требуется связь через сеть.1007 *

Опять-таки, все сводится к одному: " Используйте механизм, который вам больше подходит для применения "

1 голос
/ 31 января 2011

В нашей компании есть программное обеспечение, которое использует разделяемую память. Он использует его для потоковой передачи данных из одного процесса в другие процессы. Для него можно использовать сокеты, но поскольку это один-ко-многим, для каждого потребительского процесса должен быть создан отдельный сокет, который на самом деле не оптимален. На современных компьютерах использование общего файла, вероятно, подойдет, но это программное обеспечение было разработано в середине 90-х, когда диски были довольно медленными, и это программное обеспечение предъявляло довольно жесткие требования к задержке. Он использует своего рода кольцевой буфер, в который процесс производителя записывает свои данные. Семафоры используются для синхронизации, поэтому другие процессы не будут видеть частично обновленные данные.

В большинстве современных программных потоков, как правило, вместо нескольких процессов используется общая память.

Что касается труб, то для них чаще всего используются кожухотрубные трубы:

ps ax | grep java

Я считаю, что именованные каналы в значительной степени заменены сокетами. Даже если они все еще используются, я не знаю ни одного из них.

Вы также можете прочитать соответствующую главу «Искусство программирования Unix» Эрика Стивена Рэймонда. Он дает очень хороший обзор методов Unix IPC и их использования.

...