售前電話
135-3656-7657
售前電話 : 135-3656-7657
郵箱通信方式中,采用郵箱(Mailbox)作為進程間通信消息的緩沖器。郵箱中可包含若干封信件。支持郵箱通信方式的消息傳送系統(tǒng)(MessagePassingSystem)對進程提供以下功能;
(1)允許進程發(fā)送消息到指定的郵箱,
(2)允許進程在一個或多個郵箱上等待消息&
(3)允許進程分配和歸還郵箱。
當一個消息發(fā)送到某一郵箱時,有兩種可能性。
•在消息發(fā)送到郵箱前,可能已有一進程在此郵箱上等待消息。在這種情況下,一旦消息發(fā)送到郵箱,即可傳送給等待的進程。
•可能并無進程在此郵箱上等待。在此情況下,消息就復(fù)制到稱為信件(Letter)的緩沖器中。郵箱中的信件可用先進先出(FIFO)的方式排成隊列,以由接收進程按序接收。
進程可通過allocmbpool過程的調(diào)用,要求分配一個郵箱池(MailboxPOOL);并使用過程allocmbx,從郵箱池中分配郵箱。這兩個過程有關(guān)參數(shù)的描述如下:
DCLallocmbpoolPROC(UPDATESmbppoolid,nmbsint,ownerid,UPDATESmrcmbrc)括號中為有關(guān)的輸入輸出參數(shù):mbp:所分配的郵箱池的識別碼(ID)Inmbs:從池中要求分配的郵箱數(shù)*owner:指明郵箱池的屬主Jmrc:過程調(diào)用的返碼。
DCLallocmbxPROC1(UPDATESmidmbid,mbppoolid,maxqdmsg{0tomaxmsgs}ownerid,UPDATESmrcmbrc)mid:所分配的郵箱的識別碼;mbp:所使用的郵箱池的識別碼,maxqdmsg:在郵箱上可以編隊的最大信件數(shù);owner:指明郵箱的屬主;mrc:返回碼。還應(yīng)著重指出,任何數(shù)量的進程可以向一郵箱發(fā)送消息,但只有一個進程可以在某一郵箱上等待消息°而且,也允許一個進程在多個郵箱上等待消息,而把各種消息劃分優(yōu)先級,并把不同的郵箱分配給各個要發(fā)送消息的進程,以識別消息的發(fā)送者。
一個進程在多個郵箱上等待有兩種方式:在多郵箱(multiplemailboxes)±等待或在子郵箱(clonedmailbox)±等待。前者可多至16個郵箱,后者可多至255個子郵箱。所謂子郵箱,就是在任一已有的郵箱上可以滋生若干個子郵箱。子郵箱是在子箱池中分配,分配后將返回子郵箱的識別碼。