我想要模拟信号量(等待和信号过程)与消息传递只是形式的算法(而不是代码)。
有人能帮我吗.
发布于 2010-01-01 00:11:12
您需要知道实现关键区段和信号量基元的算法吗?见进程同步 (pdf)。请注意,有时您可能会看到使用关键部分实现信号量,以确保测试-修改操作的原子性。
消息队列构建在同步原语之上。您所寻找的消息队列在优秀的小符号学 (pdf格式)第4章中。
编辑后添加:
我必须猜一猜你所说的“邮箱”是什么意思,所以如果这个答案不好的话,你可以定义邮箱是什么。我是否理解该练习是通过使用高级同步机制(如消息队列)来实现P和V?由于消息队列必须受到防止并发性问题的保护,所以这是一个简单的练习。
给定一个类邮箱,它保证线程安全,并且具有以下方法:
然后信号量类将具有以下方法:
initialize(count):
mailbox = Mailbox.new
count.times do
v
v:
mailbox.enqueue(any_message)
p:
mailbox.dequeueany_message是任何消息。它是什么并不重要,因为我们只使用消息队列唤醒阻塞的线程。
该算法模拟一个不能有负值的信号量。可以用负值创建的信号量需要做更多的工作。你需要哪一个?
https://stackoverflow.com/questions/1987149
复制相似问题