与 Dispatcher 模式相反的是什么?
What is the opposite of a Dispatcher pattern?
调度程序委托给其他对象工作,但是是否有一种模式可以确定对象在堆栈中何时开始工作?我正在尝试让一组线程对象检查共享堆栈的输入,如果一个对象空闲,它将从堆栈中获取下一个未采用的输入以进行处理。
您可能会参考 this answer,它会争辩说队列(这正是您所描述的)只是堆栈,这是一个公平的论点。
基本模式与您所描述的几乎完全相同:一个堆栈,其中包含大量工作,工作人员将在可用时从中获取这些工作。
在野外,您可能会经常看到这种模式:
- 队列是从堆栈构建的。
- 该服务将包含一个
next()
方法,该方法将 return 下一项工作并将其标记为不可用。
- 该服务还将包含一个
complete()
方法,该方法将从堆栈中删除项目。
next()
与 complete()
的重要性在于有时会发生错误,如果您没有两步过程,工作可能会丢失。您会在大多数队列服务中看到这一点,尽管这并不是绝对必要的。
调度程序委托给其他对象工作,但是是否有一种模式可以确定对象在堆栈中何时开始工作?我正在尝试让一组线程对象检查共享堆栈的输入,如果一个对象空闲,它将从堆栈中获取下一个未采用的输入以进行处理。
您可能会参考 this answer,它会争辩说队列(这正是您所描述的)只是堆栈,这是一个公平的论点。
基本模式与您所描述的几乎完全相同:一个堆栈,其中包含大量工作,工作人员将在可用时从中获取这些工作。
在野外,您可能会经常看到这种模式:
- 队列是从堆栈构建的。
- 该服务将包含一个
next()
方法,该方法将 return 下一项工作并将其标记为不可用。 - 该服务还将包含一个
complete()
方法,该方法将从堆栈中删除项目。
next()
与 complete()
的重要性在于有时会发生错误,如果您没有两步过程,工作可能会丢失。您会在大多数队列服务中看到这一点,尽管这并不是绝对必要的。