使用有限等待标准实现信号量的方法是什么?
我知道可以通过将等待信号量的进程列表保持为FIFO来遵循有界等待标准。 但是,有没有其他方法可以做到这一点而不对正在使用的列表类型施加任何限制?
答案 0 :(得分:0)
没有什么可以阻止你建立任何你希望的复杂的生产者 - 消费者阶层,但它可能是非平凡的:
1)使用互斥锁来控制对生产者和消费者线程的线程管理数据的访问。
2)在互斥锁内部,使用任何复杂的算法/容器/无论做什么 - 它都很好且安全。
3)如果一个线程发现它由于某种原因无法继续,它应该获得一个信号量,将它存储在管理数据中,退出互斥锁并等待信号量。
4)如果一个线程需要释放一些可能允许另一个线程运行的资源,它应该进入互斥锁,分析管理数据,如果它找到现在可以允许运行的线程,则发出信号退出互斥锁之前的信号量。
请注意,这是对我的奇怪的线程锁定/管理要求Thingy'的一般要求。它涵盖了madcademic wonderContainers,(你必须使用如下定义的可变几何,多级反馈超级...),疯狂的多资源约束,(线程AB24只能在有5辆汽车时运行,3个停车系柱,两个粉红色的牙刷和爆炸的自杀式腰带),以及周五下午教授带着一瓶龙舌兰酒所做的所有其他奇怪和奇妙的事情。