我有两种方法(在C#中):
List<Pizza> CookPizza(List<Order>);
List<HappyCustomers> DeliverPizza(List<Pizza>);
这些操作没有共同的对象(除了从一个传递到另一个的披萨外),而且是线程安全的。他们每个人都需要花费几秒钟来执行,并且每个人都使用不同的资源(烤箱与汽车)。因此,我想同时运行它们。
如何组织具有以下约束的线程:
我正在努力解决的主要问题是方法可能需要如何彼此等待。
最佳答案
首先,我将使用基于事件的模型来解决此问题。
假设我们有一个PizzaDispatcher
对象,该对象已获得订单。调度程序从初始空状态开始,以一定数量的订单调用CookPizza
。比萨饼煮熟后,CookPizza
函数会通知调度程序比萨饼已经煮熟(也许通过您作为参数提供的回调)。比萨送达时,DeliverPizza
函数执行相同的操作。PizzaDispatcher
现在将具有足够的信息,可以根据煮熟的比萨饼的数量和未交付的数量来决定何时以及多少比萨饼需要上交 cooking 或交付。
可以将其重构为使用事件而不是回调等,但是我将其发布的目的是想法,而不是实现的细节。
关于c# - 披萨,线程,等待,通知。这是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5621282/