我创建了两个必须发送每个/其他消息的程序。例如:第一个程序,如带播放列表的音频'播放器'和第二个程序,如'Visualizer'。
我认为make Player和Visualizer是完全独立的程序,因为这个程序基于不同的框架,我不想混合它。而且我不想使用标准的MS Windows消息。
例如,当我运行播放器,并在播放器按下按钮'显示可视化器'时,播放器运行'可视化器',当播放器按下按钮'播放歌曲'时,播放器必须通过MPI向'Visualizer'发送消息我们开始播放和Visualizer开始显示很好的动画。
环境:MS Windows
对于MPI,我使用:Boost.MPI + Microsoft HCP MPI
但我发现只有像'Hello world'这样的愚蠢的例子,其中'parent'程序和'child'程序从一个可执行文件中运行:
#include <boost/mpi.hpp>
#include <iostream>
#include <string>
#include <boost/serialization/string.hpp>
namespace mpi = boost::mpi;
int main()
{
mpi::environment env;
mpi::communicator world;
// Parent, 'root' process
if (world.rank() == 0)
{
world.send(1, 0, std::string("Hello"));
}
else // Child process
{
std::string msg;
world.recv(0, 0, msg);
std::cout << msg << ", world";
std::cout.flush();
}
return 0;
}
我需要获得一个'mpi :: communicator world;'在不同的节目,独立开始。
// Player
int main_Player()
{
mpi::environment env;
mpi::communicator world;
if (world.rank() != 0)
{
std::cout << "Another copy of Player is started..";
return -1
}
}
和
// Visuzalizer
int main_Visuzalizer()
{
mpi::environment env;
mpi::communicator world;
// Receive message from Player
if (world.rank() > 0)
{
std::string msg;
world.recv(0, 0, msg);
}
}