与 Dispatcher 模式相反的是什么?

What is the opposite of a Dispatcher pattern?

调度程序委托给其他对象工作,但是是否有一种模式可以确定对象在堆栈中何时开始工作?我正在尝试让一组线程对象检查共享堆栈的输入,如果一个对象空闲,它将从堆栈中获取下一个未采用的输入以进行处理。

您可能会参考 this answer,它会争辩说队列(这正是您所描述的)只是堆栈,这是一个公平的论点。

基本模式与您所描述的几乎完全相同:一个堆栈,其中包含大量工作,工作人员将在可用时从中获取这些工作。

在野外,您可能会经常看到这种模式:

  • 队列是从堆栈构建的。
  • 该服务将包含一个 next() 方法,该方法将 return 下一项工作并将其标记为不可用。
  • 该服务还将包含一个 complete() 方法,该方法将从堆栈中删除项目。

next()complete() 的重要性在于有时会发生错误,如果您没有两步过程,工作可能会丢失。您会在大多数队列服务中看到这一点,尽管这并不是绝对必要的。