我有两个方法(在C#):披萨,线程,等待,通知。这是什么意思?
List<Pizza> CookPizza(List<Order>);
List<HappyCustomers> DeliverPizza(List<Pizza>);
这些操作(从从一个传递到另一个比萨饼除外)没有共同的目标,并且是线程安全的。他们每个人需要几秒钟才能执行,他们每个人都使用不同的资源(烤箱vs汽车)。因此,我想同时运行它们。
如何整理穿线这些限制:
我知道所有的订单在启动(比方说,我有他们的100,000)。订单可以由多个比萨饼组成,我不知道有多少比萨饼在任何订单中,直到这些比萨饼被煮熟之后。 (我知道的很奇怪)。通常一个订单有1个比萨饼,但最多可以有10个。
活动比萨饼的数量一般不应超过100.这包括比萨饼新鲜烹制的比萨饼正在交付。这是一个软限制,所以我可以超过它(例如,当一个大订单煮熟时)。硬限制可能接近500.
这两种操作在进行大量工作时效率更高。一般来说,CookPizza在提供至少20份订单时效率最高。送至少50份披萨时,送披萨最为有效。也就是说,如果我给这些方法的项目数量少于这些数量,我会看到性能下降。如果剩下所有东西,就可以使用更少的项目。
我一直在努力的主要问题是方法可能需要彼此等待。
- DeliverPizza可能需要等待周围CookPizza完成50
- CookPizza可能需要等待周围DeliverPizza活跃比萨饼的数量减少到100
这些方法是否必须具有这些签名? – jgauffin 2011-04-11 12:34:37
+1如果你点击这个链接,因为字PIZZA – 2011-04-11 12:46:06
@jgauffin,no。你有什么考虑? – 2011-04-11 16:25:11