我有一个 C++ 多线程应用程序,它在单独的线程中运行任务。每个任务都有一个对象来处理和存储它的输出。每个任务创建不同的业务逻辑对象,可能还有另一个线程或线程池。
我想要做的是以某种方式为任务运行的任何业务逻辑对象提供一种简单的方法来访问每个任务的输出,而无需手动将“输出”对象传递给每个业务逻辑对象。
我看到的是创建输出单例工厂并将 task_id 存储在 TLS 中。但问题是当业务逻辑创建一个新线程或线程池时,这些线程在 TLS 中不会有 task_id。这样,我将需要访问父线程 TLS。
另一种方法是简单地获取自任务开始以来的所有输出。那时会有不同任务的输出,但至少,总比没有好......
我正在寻找有关解决我的问题的干净而漂亮的方法的任何建议或想法。谢谢。
upd:是的,它不是单音的,我同意。我只想能够像这样访问这个对象:
output << "message";
就是这样。不用担心在业务逻辑类之间传递指向输出对象的指针。我需要每个任务都有一个全局输出对象。