реклама на сайте
подробности

 
 
> Вопрос ламера по Linux IPC, Inter Process Comminications
Evgeny_CD
сообщение Jan 13 2006, 20:33
Сообщение #1


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Есть два процесса под Linux. Им надо обмениваться пакетами данных.

Пакет представляет из себя:

* заголовок - поле фиксированной длины
* данные - поле переменой длины (<= MAX_LEN), заполненное бинарными
случайными данными.

Как лучше всего сделать такой обмен?

Я удумал следующее.

1. Канал. Пишем, читаем. Но поскольку он имеет байтный интерфейс, при
последовательном чтении непонятно, где начинается заголовок. Значит,
придется вводить какие-то механизмы для его нахождения (Escape
последовательности и пр.). Это не сложно, но совершенно лишнее действие
в контексте решаемой задачи (нужно ее решить максимально быстро по
программированию, расход памяти и процессорного времени не важен (в
разумных пределах)).

2. Разделяемая память. Наделать там кучу семафоров, и обмениться
указателями на структуры.

3. Гибрид smile.gif

Делаем разделяемую память, а там - кольцевой массив структур. Каждая
структура - это сообщение, данные пакета аппроксимированы массивом
максимальной длины (пустые места в памяти не волнуют).

2 потока для каждого направления обмена.

Передающий процесс пишет в поток send_msg char значение номера
элемента в массиве, куда он положил пакет.

Принимающий процесс пишет в поток msg_ask char значение номера элемента в
массиве, который он прочитал (освободил).

IMHO, так еще будет быстрее всего (нет лишнего копирования) и
экономнее (по памяти) всего (нет памяти для лишних копий).

Вероятно, я изобретаю велосипед. А что скажут Гуру по данному поводу?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Evgeny_CD   Вопрос ламера по Linux IPC   Jan 13 2006, 20:33
- - zltigo   Цитата(Evgeny_CD @ Jan 13 2006, 22:33) Ес...   Jan 13 2006, 21:49
|- - Evgeny_CD   Цитата(zltigo @ Jan 14 2006, 00:49) Самое...   Jan 13 2006, 22:47
- - zltigo   Цитата(Evgeny_CD @ Jan 14 2006, 00:47) С ...   Jan 13 2006, 23:33
|- - Evgeny_CD   Цитата(zltigo @ Jan 14 2006, 02:33) Значи...   Jan 13 2006, 23:39
- - psL   Если один процесс родительский, а второй его потом...   Jan 14 2006, 11:43
- - zltigo   Цитата(psL @ Jan 14 2006, 13:43) Если оди...   Jan 14 2006, 13:03
|- - psL   > 1. Pipe и FIFO суть одно и то-же и работают о...   Jan 14 2006, 13:56
- - zltigo   Цитата(psL @ Jan 14 2006, 15:56) > 1. ...   Jan 14 2006, 14:53
|- - psL   Цитата(zltigo @ Jan 14 2006, 17:53) ?????...   Jan 14 2006, 16:01
|- - alexr22b   Цитатая имел ввиду, что TCP - не гарантирует сохра...   Jan 15 2006, 06:23
- - Harbour   Насчет выделения пакетов из какого угодно потока (...   Jan 14 2006, 19:04
- - zltigo   Цитата(Harbour @ Jan 14 2006, 21:04) Я та...   Jan 14 2006, 20:54
- - zltigo   Цитата(alexr22b @ Jan 15 2006, 08:23) И э...   Jan 15 2006, 11:34
- - _artem_   Vikladivayu knizku na /upload/doc/Unix_Linux_books...   Jan 15 2006, 16:37
|- - Evgeny_CD   Цитата(_artem_ @ Jan 15 2006, 19:37) Vikl...   Jan 15 2006, 16:54
|- - Konst_777   Цитата(_artem_ @ Jan 15 2006, 19:37) Vikl...   Jan 18 2006, 03:14
- - Evgeny_CD   Спасибо всем просветившим меня! Из всего мног...   Jan 15 2006, 17:55
- - nazim   Я для этой цели использовал простой "самодель...   Jan 15 2006, 19:18
|- - Evgeny_CD   Цитата(nazim @ Jan 15 2006, 22:18) ...Я д...   Jan 15 2006, 20:01
- - zltigo   Обалдеть.   Jan 15 2006, 21:36
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 00:36) Обалд...   Jan 15 2006, 21:51
|- - psL   Вообще-то для обеспечения прозрачности передаваемы...   Jan 15 2006, 22:08
- - zltigo   Цитата(Evgeny_CD @ Jan 15 2006, 23:51) Ци...   Jan 15 2006, 23:05
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 02:05) ...В ...   Jan 15 2006, 23:32
- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 01:32) Вс...   Jan 15 2006, 23:55
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 02:55) Ну и ...   Jan 16 2006, 00:49
- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 02:49) Эт...   Jan 16 2006, 01:16
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 04:16) 1. Ну...   Jan 16 2006, 01:31
|- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 03:31) SO...   Jan 16 2006, 11:08
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 14:08) ...На...   Jan 16 2006, 11:16
- - Harbour   Цитата(zltigo @ Jan 14 2006, 22:54) Цитат...   Jan 16 2006, 09:35
- - zltigo   Цитата(Harbour @ Jan 16 2006, 11:35) 3. С...   Jan 16 2006, 10:51
- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 13:16) Ви...   Jan 16 2006, 11:31
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 14:31) Излиш...   Jan 17 2006, 15:56
- - Harbour   Цитата(zltigo @ Jan 16 2006, 12:51) Цитат...   Jan 16 2006, 17:55
- - zltigo   Цитата(Harbour @ Jan 16 2006, 19:55) то ч...   Jan 16 2006, 18:26
- - Harbour   Пусть теоретики на своими прожектами думают - мне ...   Jan 17 2006, 07:02
- - zltigo   Цитата(Harbour @ Jan 17 2006, 09:02) Пуст...   Jan 17 2006, 11:32
- - Harbour   Даже такой отторможенный арм как 920 должон легко ...   Jan 17 2006, 20:21
|- - Evgeny_CD   Цитата(Harbour @ Jan 17 2006, 23:21) ...Д...   Jan 17 2006, 20:56
- - zaratustra   > оцифровывать входной сигнал с относительно вы...   Jan 26 2006, 12:57
|- - Evgeny_CD   Цитата(zaratustra @ Jan 26 2006, 15:57) ....   Jan 26 2006, 13:44
- - zaratustra   А вы не пробовали поискать девкиты работающие под ...   Jan 26 2006, 14:02
|- - Evgeny_CD   Цитата(zaratustra @ Jan 26 2006, 17:02) А...   Jan 26 2006, 14:27
- - zaratustra   Вам виднее, кто кроме вас вашу задачу знает? Если ...   Jan 27 2006, 08:34
|- - Evgeny_CD   Цитата(zaratustra @ Jan 27 2006, 11:34) ....   Jan 27 2006, 09:32
- - zaratustra   Линукс насколько я вижу мигрирует к десктопу быстр...   Jan 27 2006, 10:17
|- - Evgeny_CD   Цитата(zaratustra @ Jan 27 2006, 13:17) Л...   Jan 27 2006, 11:42
- - zaratustra   Самое лучшее что могу вам посоветовать - побыстрее...   Jan 27 2006, 13:00
|- - Evgeny_CD   Цитата(zaratustra @ Jan 27 2006, 16:00) ....   Jan 27 2006, 13:02
- - defunct   Я прощу прощения если не в тему, но Evgeny_CD а н...   Jan 31 2006, 01:31
- - Evgeny_CD   Цитата(defunct @ Jan 31 2006, 04:31) Я пр...   Jan 31 2006, 02:01
- - defunct   Цитата(Evgeny_CD @ Jan 31 2006, 04:01) 1....   Jan 31 2006, 02:47
- - Evgeny_CD   Цитата(defunct @ Jan 31 2006, 05:47) Опыт...   Jan 31 2006, 08:00
- - defunct   Цитата(Evgeny_CD @ Jan 31 2006, 10:00) Пр...   Jan 31 2006, 23:45
- - Evgeny_CD   Цитата(defunct @ Feb 1 2006, 02:45) ...По...   Feb 1 2006, 06:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 03:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01657 секунд с 7
ELECTRONIX ©2004-2016