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