C ++ Многопоточность на нескольких машинах - PullRequest
0 голосов
/ 15 марта 2012

Ну, моя проблема заключается в следующем.У меня есть кусок кода, который выполняется на нескольких виртуальных машинах, и каждая виртуальная машина имеет N интерфейсов (по одному потоку на каждую).Сама проблема заключается в получении сообщения на одном интерфейсе и его перенаправлении через другой интерфейс самым быстрым способом.

Что я делаю, когда получаю сообщение на одном интерфейсе (Unicast), вычисляю, какой интерфейсЯ хочу перенаправить его, сохранить всю информацию о сообщении (датаграмму и всю дополнительную информацию, которую я хочу) с помощью функции, которую я сделал.Затем на следующей итерации программа проверяет, есть ли новые сообщения для перенаправления и является ли это правильным интерфейсом, читающим его.И так далее ... Но это заставляет программу обмениваться информацией очень медленно ...

Есть ли механизм, способный ускорить процесс?

Ответы [ 3 ]

3 голосов
/ 15 марта 2012

Кто-то уже изобрел это конкретное колесо - оно называется MPI

Взгляните на openMPI или MPICH

1 голос
/ 15 марта 2012

Похоже, вы пытаетесь выполнять параллельные вычисления на нескольких «машинах» (даже если они виртуальные).Возможно, вы захотите взглянуть на существующие протоколы, такие как MPI - Интерфейс передачи сообщений для обработки этого домена, поскольку у них довольно много функций, которые помогают в сценарии этого типа

1 голос
/ 15 марта 2012

Почему вы не используете очереди? Когда приходят сообщения, поместите их в очередь и уведомите каждый модуль обработки, чтобы они забрали их из очереди. Например:

  • MSG входит в
  • Модуль 1 ставит его в очередь
  • Модуль 2,3 получения уведомления
  • Модуль 2 забирает его из очереди и сохраняет в базе данных
  • Параллельно модуль 3 выбирает его из очереди и обрабатывает его

Ключ "параллельно". Поскольку эти модули представляют собой разные потоки, а модуль 2 сохраняется в БД, модуль 3 может обработать ваше сообщение.

Вы можете использовать JMS или MQ или создать собственную очередь.

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