有人可以提供如何实现以下情况吗?
2个队列 - 目标队列,响应队列
线程从目的地队列中挑选任务
发现需要更多细节
将新任务提交到目标队列
等待他的请求被处理,结果出现在响应队列中
或
监视响应队列以响应他的任务,但实际上没有选择任何响应,以便等待其他响应的其他线程可以使用它?
谢谢
答案 0 :(得分:1)
如果线程等待特定任务完成,即它不应该选择任何已完成的任务,除了它所放置的任务,您可以使用锁来等待任务:
def run(self): # get a task, do somethings, put a new task newTask.waitFor() ...class Task: ... def waitFor(self): self._lock.acquire()
def complete(self): self._lock.release()
def failedToComplete(self, err): self._error = err self._lock.release()
这将有助于避免time.sleep()
- s响应队列监控。这里应考虑任务完成错误处理。但这种情况并不常见。是一些特定的算法,其中放置新任务的线程应该等待它吗?即便如此,您可以将该逻辑实现到Task类中,而不是在处理它的线程中。为什么线程从目标队列中选择一个任务并将新任务放回目标队列?如果您有n个处理步骤,则可以使用n个队列。一组线程服务于第一个队列,获取任务,处理它,将结果(新任务)放入下一个队列。最终响应处理程序线程组获得响应并将其发送回客户端。任务封装了与自身有关的细节,线程不区分任务与其他任务。并且不需要等待特定任务。