0

多线程已经超过了我。我不要求特定的代码,而是希望您帮助我解决问题的逻辑结构。

我们有一家餐厅,只有 2 名服务员,他们立即接受顾客的订单,这意味着一旦他们有空(不服务),他们就会从排队的顾客那里接单,然后处理(服务他们)这些订单是随机的(在一个时间范围内,而不是立即)。顾客在排队,无论哪个服务员在那一刻没有服务,他们都会接受他们的订单。

我有一个名为的函数GetInLine(),它是客户的生成器,它只是在将Sleep()每个客户添加到行之前使用函数。

我有一个名为TakeOrders()(据说)从客户那里接受订单的函数。问题是,在那个函数中,我有一个函数调用ServeCostumer()可以立即为客户服务。如果我制作该功能,Sleep()那么它会休眠并为客户服务,但我想要的当然是多任务/线程,它应该是这样的:

  • 客户1来了
  • 服务员 1 点菜
  • 顾客2来了
  • 服务员 2 点菜
  • 3来了
  • 服务员 1 为顾客 1 服务
  • 客户 4 来了
  • 服务员 2 为顾客 2 服务

我主要要问的是,你能帮我在代码级别上可视化吗?我是说

接单...
锁定这里
解锁这里

叫这个那个
等等。。

类似的东西。

4

1 回答 1

1

问题的本质似乎是你需要两个单独的动作,发生在不同的时间。

  1. 2名服务员立即为顾客服务(需要时间)
  2. 客户被随机添加到队列中。

我认为互斥锁在这里可能是矫枉过正的。如果你真的想包含一个锁定机制,你可以为顾客添加一个名为 hasBeenServed 的开关,在为顾客服务之前,它会被检查,如果它是假的,则由服务员翻转。如果是真的,那就去找下一个客户。

就线程而言,最简单的解决方案可能是拥有以下线程:

  1. 服务员 1
  2. 服务员 2
  3. 客户专线

然后立即将它们全部踢掉。我不是多线程专家,但这可能是我处理它的方式。

于 2013-05-19T10:46:00.683 回答