我有多个生产者线程将数据排队到线程安全的“命令优先级队列”中。

还有一个“命令读取器”使用者线程,它将不断检查此“命令优先级队列”以获取数据,将其出队并进行必要的处理。 最终,在每次处理之后,需要将结果返回到发出命令的正确生产者线程。

我曾考虑过使用另一个线程安全的“结果队列”来排队结果,但是问题是如何将数据推送到相关的生产者线程?

还是我可以尝试其他优雅的解决方案/机制或体系结构?

谢谢。 任何帮助将不胜感激。

===============>>#1 票数:1

我通常要做的是向排队到线程的数据对象添加一个“ OnCompletion”事件(或Task类OnCompletion函数重写)。 当完成任何数据处理的线程结束时,它将使用数据对象作为参数调用“ OnComplete”。 原始生产者线程可以在将数据对象排队之前将OnComplete'事件(或重写方法)设置为所需的任何函数。

“ OnCompletion”事件可能表示生产者线程将任务排队后等待(同步)的事件,也可能将任务对象排队到生产者线程的私有“ returnedData”阻塞队列中,以便可以生产者在每次处理时都将其出队并进行处理(异步)。

编辑:数据/任务对象应该包含一个exception和/或errorMessage成员,这样,如果线程遇到数据问题,则可以在调用“ OnCompletion”之前对其进行适当的设置。 这使生产者线程可以查看是否有任何错误。

  ask by HKWalker translate from so

未解决问题?本站智能推荐: