Сейчас на форуме: bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Какой самый эффективный IPC между 32 и 64 битами?
Посл.ответ Сообщение

Ранг: 57.1 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 16 февраля 2011 12:25 · Поправил: sys_dev
· Личное сообщение · #1

Вобщем, есть 32-битный код помещенный в dll и с точно таким же интерфейсом есть 64-битная dll. Обе будут подгружаться некоторым стороним(не моим) продуктом некоторой другой конторы.

Нюансы:
Нет возможности портировать 32-битный код под 64 бита за приемлимое время с точки зрения бизнеса. Слишком много человеко-дней(месяцев) надо.

Вывод:
Как уже писал выше, основное "мясо" помещается в 32-битный dll и с точно таким же интерфейсом в 64 битную версию dll.

Сценарий работы:

1. 64-битная длл, подгружается 64-битной версией сторонего продукта
2. Длл создает сурогатный 32-битный процесс 32-битного PE-файла
3. Суррогат грузит 32-битную длл, в которой основное мясо. Тем самым он становится прокси\адептером меж 32 и 64 битным кодом!
4. Взаимодействие сделать через IPC.

Условия:
Между процессами 64 и 32 битными будут пересылаться куски данных размером в 4КБ довольно часто!

Сейчас сделал на юзании именованных пайпа с синхронными(не overlap) ReadFile, WriteFile функциями, т.е. чтение блокирует трэд до тех пор пока в пайп не начнут писать и наоборот.

Вопросы:
Основной: Какой самый эффективный IPC между этими 32 и 64 битами?
Предположения: Может одно из: сокеты, COM или именованная глобал шаред меморю?
Может еще что?

Мне нужно побыстрее в скорости не заботясь о размере файлов(ну разве что на десятки МБ не стоит ))) !




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 16 февраля 2011 14:06
· Личное сообщение · #2

Шаред мемори имхо само то

-----
Yann Tiersen best and do not fuck


| Сообщение посчитали полезным: sys_dev, Hexxx, ajax

Ранг: 57.1 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 16 февраля 2011 14:10 · Поправил: sys_dev
· Личное сообщение · #3

PE_Kill
Спасибо, но каковы аргументы? Просто если буду требовать человеко-часы, мне желательно обосновать, что это действительно стоит того!

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



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 16 февраля 2011 14:21
· Личное сообщение · #4

Конечно же COM, ибо это самый простой способ портирования. А всё остальное только если скорости не хватит.

-----
PGP key <0x1B6A24550F33E44A>




Ранг: 57.1 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 16 февраля 2011 14:26
· Личное сообщение · #5

>>Конечно же COM, ибо это самый простой способ портирования.
С технологией COM не у всех общение на "ТЫ" ;) Сколько помню и сам на "ВЫ", слишком много всего знать и помнить для отладки и разработки надо ;)



Ранг: 590.6 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 16 февраля 2011 14:28
· Личное сообщение · #6

Раз уже готово - пользуйтесь пайпами и не заморачивайтесь. Когда станет bottleneck - будете думать.

-----
старый пень




Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 16 февраля 2011 14:35
· Личное сообщение · #7

Shared memory, aka memory mapped файлы - самый быстрый вариант.

-----
Реверсивная инженерия - написание кода идентичного натуральному



 eXeL@B —› Программирование —› Какой самый эффективный IPC между 32 и 64 битами?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати