2.4 数据类型 BACKWARDFORWARD


2.4.1 模糊对象(Opaque objects) 


MPI 管理系统存储器, 主要用于暂存消息和存储各种MPI对象的内部表示, 如进程组, 通信组, 数据类型等MPI对象。用户不能直接对这个存储器存取,并且所存储的对象是模糊的:即他们的尺寸和形状对用户不可见。模糊对象通过存在于用户空间的句柄可以被存取。对模糊对象操作的MPI过程被传送给存取这些对象的句柄参数。句柄除了用于MPI调用这些对象存取外, 句柄能参与赋值和比较。   

Fortran中, 所有句柄的类型都是INTEGER(整型)。C语言中, 对每种对象定义不同类型的句柄。这些类型应支持赋值操作和相等操作。   

Fortran中, 句柄可以是系统表中的一个模糊对象表的一个索引; C语言中, 句柄可以是对模糊对象的这样的索引或者是模糊对象的一个指针。更希奇的可能存在。   

对每类对象的调用能“分配”和“解出分配”模糊对象。这些在描述对象那节给出列表。调用接受一个相应类型的句柄参数。在一个分配调用中,这是一个OUT参数, 它返回这个对象的一个有效引用。在一个解出分配调用中,这是一个INOUT参数, 带着一个" 无效的句柄" 值返回。MPI对每种对象类型提供一个" 无效的句柄" 常量。对这个常量的比较用于检测这个句柄的有效性。   

对解出分配的一个调用使该句柄无效,并标记这个对象为解出分配。在这个调用之后,用户不能存取该对象。但MPI不必立刻解出分配这个对象。涉及对象的任何挂起操作(在解出分配时)将正常完成; 之后, 这个对象将被解出分配。   

一个模糊对象和它的句柄仅在创建对象的进程中是重要的,而且还不能传给其他进程。  

MPI提供预定义的模糊对象和这些对象的预定义的静态句柄。这些对象不能被损坏。


Copyright: NPACT BACKWARDFORWARD