专注SIP通讯产品与方案

邮箱通信的基本概念

邮箱通信方式中,采用邮箱(Mailbox)作为进程间通信消息的缓冲器。邮箱中可包含若干封信件。支持邮箱通信方式的消息传送系统(MessagePassingSystem)对进程提供以下功能;
(1)允许进程发送消息到指定的邮箱,
(2)允许进程在一个或多个邮箱上等待消息&
(3)允许进程分配和归还邮箱。
当一个消息发送到某一邮箱时,有两种可能性。
•在消息发送到邮箱前,可能已有一进程在此邮箱上等待消息。在这种情况下,一旦消息发送到邮箱,即可传送给等待的进程。
•可能并无进程在此邮箱上等待。在此情况下,消息就复制到称为信件(Letter)的缓冲器中。邮箱中的信件可用先进先出(FIFO)的方式排成队列,以由接收进程按序接收。
进程可通过allocmbpool过程的调用,要求分配一个邮箱池(MailboxPOOL);并使用过程allocmbx,从邮箱池中分配邮箱。这两个过程有关参数的描述如下:
DCLallocmbpoolPROC(UPDATESmbppoolid,nmbsint,ownerid,UPDATESmrcmbrc)括号中为有关的输入输出参数:mbp:所分配的邮箱池的识别码(ID)Inmbs:从池中要求分配的邮箱数*owner:指明邮箱池的属主Jmrc:过程调用的返码。
DCLallocmbxPROC 1(UPDATESmid mbid,mbp poolid,maxqdmsg{0tomaxmsgs}ownerid,UPDATESmrcmbrc)mid:所分配的邮箱的识别码;mbp:所使用的邮箱池的识别码,maxqdmsg:在邮箱上可以编队的最大信件数;owner:指明邮箱的属主;mrc:返回码。还应着重指出,任何数量的进程可以向一邮箱发送消息,但只有一个进程可以在某一邮箱上等待消息°而且,也允许一个进程在多个邮箱上等待消息,而把各种消息划分优先级,并把不同的邮箱分配给各个要发送消息的进程,以识别消息的发送者。
            一个进程在多个邮箱上等待有两种方式:在多邮箱(multiplemailboxes)±等待或在子邮箱(clonedmailbox)±等待。前者可多至16个邮箱,后者可多至255个子邮箱。所谓子邮箱,就是在任一已有的邮箱上可以滋生若干个子邮箱。子邮箱是在子箱池中分配,分配后将返回子邮箱的识别码。