В моем коде c ++ (my_app) мне нужно запустить внешнее приложение (app_ext), которое динамически загружает мою библиотеку (dll, так), написанную на fortran (lib_fort). Из этой библиотеки (lib_fort) мне нужно перезвонить к какому-то методу из my_app, синхронно.
Так вот так:
(my_app) --launches -> (app_ext) --loads -> (lib_fort) - "звонки" -> (my_app)
app_ext не разработан мной.
Есть ли у вас какие-либо предложения, как это сделать, и что самое главное, сделать это эффективно ??
Edit:
Разъяснение. Запуск внешнего приложения (app_ext) и загрузка из него моей библиотеки (lib_fort) произойдет только один раз за выполнение всей программы. Так что эта часть не должна быть ультра-эффективной. Связь между lib_fort и my_app критична для производительности. Lib_fort должен «позвонить» my_app миллионы раз.
Все дело в эффективной межпроцессной коммуникации.
Роль My_app после запуска app_ext - ждать и обслуживать «вызовы» из lib_fort. Сложность заключается в том, что решение должно работать как для распределенной, так и для совместно используемой памяти, то есть my_app и app_ext + lib_fort на одном хосте (1) и my_app и app_ext + lib_fort на разных машинах (2).
В (1) сценарии я думал о MPI, но я не уверен, возможно ли связываться с MPI между двумя разными приложениями (в отличие от одного многопроцессорного приложения MPI).
В (2) сценарии возможно какое-то межпроцессное взаимодействие с использованием общей памяти? (или, может быть, также MPI?)