消息传递机制_发送原语&接收原语

bulletCoderHope 2006-03-11 07:45:42
procedure send(receiver,a)
begin
getbuf(a.size,i) '取得发送进程的缓冲区i,大小与发送进程的发送区a相同
i.sender=a.sender; '将发送进程的内容复制到缓冲区i
i.size=a.size;
i.text=a.text;
i.next=0; '因为缓冲区是在需要的时候才创建,所以赋值为0
getid(pcb set,receiver,j);'取得发送进程的pcb设置,j为消息缓冲队列
p(j.mutex);'互斥访问消息队列
insert(j.mq,i);'将i的地址放置到j中的为空的第一个缓冲单元
v(j.mutex);'释放该消息队列的使用权
v(j.sm);'所以消息缓冲队列中可以使用的缓冲单元又多了一可用资源
end
procedure receive(b)
begin
j:=internal name; '不明白这句的用意,请多多指教
p(j.sm);'申请其中的一缓冲单元,令s.value=s.value-1使可用资源减少1
p(j.mutex);'霸占该消息队列的使用权
remove(j.mq,i);'删除消息缓冲队列中i的地址
v(j.mutex);'释放消息队列的使用权
b.sender:=i.sender; '将i缓冲区的内容复制到接收进程的接收缓冲区b中
b.size:=i.size;
b.text=i.text;
releasebuf(i);'释放缓冲区i
end
请问我这样理解消息传递机制正确吗??
...全文
224 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧