Я пишу программу, где мне нужно передать фрагмент массива между процессами, используя очередь сообщений (не использовать общую память для этого ...) , Этот фрагмент массива может иметь разную длину, поэтому мне интересно, как лучше всего это сделать - могу ли я указать размер сообщения во время выполнения? Я знаю, что я могу передать структуру, как это через очереди:Очередь сообщений IPC System V - отправка части массива
struct msg {
long type;
char data[N];
};
где N определяется во время компиляции, и AFAIK, я не могу сделать что-то вроде этого:
struct msg {
long type;
char *data;
};
потому, что содержание указатель не будет скопирован, только его значение ...
Итак, каков наилучший способ решить эту проблему? Какой N выбрать, чтобы он работал эффективно? отправляет char data[1]
ok? Я беспокоюсь, что если несколько процессов запросят большую таблицу, это создаст узкое место и не будет эффективным. Действительно ли мои заботы действительны?