Предположим есть 2 программы, условный клиент и сервер, а вернее специализированная программа для вычисления кое чего, написанная на одном языке и программа работающая с ней написанная на другом. При этом процессы даже могут не находится на одном компьютере, а общаться через сеть.
Первая идея. Сделать обмен через стандартный ввод вывод, передавая что то вроде уплотнённого json. Вторая идея, разместить в tmpfs файлы и постоянно проверять в них байт с флагом обновления данных. Третья идея, просто использовать TCP.
Для чего это нужно? Что бы гонять очень много вызовов, хоть в асинхронном режиме. А точнее, каждый «тик», посылать «плагинам» обновление двухмерной игровой карты (только изменённые данные). Посылать события поддерживаемых объектов. Принимать изменения в полях объектов, изменения игровой карты. А так же вынести тем самым в асинхронные потоки расчёты маршрутов, освещённости, термодинамику, грязь.
В общем нужно будет приблизительно 60 раз в секунду, обмениваться данными приблизительно с 16 процессами. Каждый «тик» предположительно займёт несколько десятков килобайт данных туда и обратно.
Понятно что сделать нормальный мультипоток правильнее, но если бы этот вариант подходил бы, то этого вопроса и не было.