Если производительность действительно становится проблемой, вы можете использовать разделяемую память - но это намного сложнее, чем другие методы - вам понадобится механизм сигнализации для оповещения о готовности данных (семафор и т. Д.), А также блокировки для предотвращения одновременного доступ к структурам во время их изменения.
Положительным моментом является то, что вы можете передавать много данных без необходимости копировать их в память, что в некоторых случаях определенно повысит производительность.
Возможно, существуют полезные библиотеки, которые предоставляют примитивы более высокого уровня через разделяемую память.
Общая память обычно получается путем mmapping того же файла с использованием MAP_SHARED (который может быть в tmpfs, если вы не хотите, чтобы он сохранялся); многие приложения также используют разделяемую память System V (ИМХО по глупым историческим причинам; гораздо менее приятный интерфейс к тому же)