每次都要显示调用 MPI::Init(argc,argv) 和 MPI::Finalize(),就像是语法括号一样,倒也不麻烦。只不过这两者通常相隔较远,视觉上看得有些累。我是个懒人,看得不顺眼,用得不顺手就想改。
首先,决定写个类把它封装起来,将这两者分别放置在Constructor和Destructor中,这样调用时只需要生成一个对象就能实现自动调用Init和Finalize的功能。
示例代码如下:
其次,因为MPI提供的信息获取函数函数名称,如机器名称、处理器的总数和当前处理器的序号等,容易产生误解。Martin Fowler 说过名字很重要,所以我这个类中顺便把这些函数也给封装一下。
最后,考虑到性能,Init和Finalize一般在代码中只调用各一次,因此有必要把这个类改成Singleton。这项工作将在模式学习中来完成。