专注SIP通讯产品与方案

邮箝和信件的数据结构

(1)邮箱
            每当从邮箱池分配一个邮箱时,就会给予一个邮箱识别码,以区别各个邮箱。进程只有使用邮箱识别码才能访问邮箱。邮箱是一个结构模式,包含以下的域:
•mbqlink
            当进程在多个邮箱上等待时,mbqlink用于将多个邮箱链接在一起。此链队的首针procmbq在进程控制块(PCB)中。如果进程只在一个邮箱或一个子邮箱上等待,则mbqlink为空值。
•mbprocqd
            mbprocqd是指示是否有一进程在此邮箱上等待的标志。这一标志可用来保证只能有一个进程在邮箱上等待。
•cloned
            指示此邮箱是否已被滋生为多个cloned邮箱的域。
•mbindex
            指明邮箱在用mbqlink链接起来的链队中位置的域。mbindex的值是在调用过程multiwait时返回的mbnoo。
•mblettercount
            这个域指明还有多少封信件可以置入此邮箱的信件队列中。当分配了一个邮箱,就将此邮箱信件队列中可置入的最大信件数置于mblettercount域中。每当置入一封信件,此域应减1。当此域的值为零,表示邮箱已满,不能再置入信件。在定义一个进程时,要考虑该进程的邮箱中最大能容纳的信件数,以作为mblettercount的初值。此值所以有限制,是使得进程能够足够快地处理信件,否则将处理太慢,甚至难以处理。
•mbprocptr
            mbprocptr是一个指针,指向等待在此邮箱上的进程。
•mbletterq
            邮箱中信件链队的首针,这是一个单向链队。
(2)信件
            信件也是结构模式,包含以下的域:
•Iqlink
            信件链队的链接域。
•Icontent
            信件内容即消息的存储区。
•Istate
            指明信件的状态。如果信件在空闲链队中,即信件未被使用时(state为零。当信件使用时Jstate中反映的是信件使用了多长时间。
•clonenum
            指明cloneIDCclone识别码)的域。如邮箱已滋生为多个clone,由此域可指明消息发往哪一个cloneo
•Isetpref
            这个域指明发送消息的进程是否是一个保证的后台进程。保证的后台进程是进程调度中的一个类别,详见第四节。
•Imbp
            指向信件所属于的邮箱的域。