Сериализация как механизм IPC?

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

Моя реализация прекрасно работает с примитивными типами данных, но завершается неудачно, когда пользователь хочет передать типы не POD [Plain Old Datatypes].

По предложению людей здесь на ТАК Я читал о Boost Serialization и о том, как он позволяет сериализовать даже не POD.

Вопрос:

Q1. Считается ли сериализация / десериализация механизмом IPC сам по себе или он используется вместе с другой реализацией? [Другими словами, должен ли я улучшить реализацию своей очереди сообщений, используя сериализацию, или я должен перейти к сериализации как самому механизму IPC? ]

Если да, разве это не будет медленным, поскольку включает в себя запись данных на жесткий диск и чтение их оттуда?

или это просто мое недоразумение, и все IPC, такие как d-bus, могут на самом деле сохранять данные на диск и просто передавать идентификатор файла другому процессу для чтения?

3

Решение

Сериализация / десериализация сама по себе не является механизмом IPC — вам нужно использовать что-то вроде каналов для связи между различными процессами. Сказав это, вы можете определенно сериализовать / десерализовать данные в и из этих каналов.

Используя такую ​​стратегию мог быть медленным, но если это так, то любая медлительность возникнет из-за сериализации и буферизации. Если вы используете каналы, вы просто пропускаете сериализованные байты через память, а не записываете на диск и затем читаете с диска.

Я написал реализацию такого шаблона в C # некоторое время назад, там есть пост в блоге Вот если вы заинтересованы в некоторых идеях реализации.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]