Передача данных между потоками в C ++ и Fortran - PullRequest
0 голосов
/ 04 ноября 2011

Мне нужно переместить большое количество (~ 10 ^ 6 поплавков) между несколькими потоками c ++ и потоком fortran. В настоящее время мы используем общую память Windows для перемещения очень маленького фрагмента данных, в основном для связи, а затем сохраняем файл в собственном формате для перемещения данных. Меня попросили посмотреть на перемещение большей части данных через разделяемую память, но, глядя на методы разделяемой памяти в окнах (по-видимому, символьный буфер), это выглядит как беспорядок. Еще одна возможность - повысить межпроцессное взаимодействие, но не уверен, как использовать это из Фортрана, или, если это хорошая идея. Другая идея заключалась в использовании базы данных, такой как sqlite.

Мне просто интересно, имел ли кто-нибудь опыт или хотел бы прокомментировать, так как это сейчас немного над моей головой.

Большое спасибо Jim

1 Ответ

0 голосов
/ 06 ноября 2011

Используйте трубы. Если вы можете наследовать дескрипторы между процессами, вы можете использовать анонимные каналы, когда нет, вы должны использовать именованные каналы. Кроме того, потоки разделяют адресное пространство, поэтому вы, вероятно, думаете о процессах, когда говорите «потоки».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...