我有一個C++多線程應用程序,它在單獨的線程中運行任務。每個任務都有一個處理和存儲輸出的對象。每個任務創建不同的業務邏輯對象,可能還有另一個線程或線程池。幾個單例:每個任務一個
我想要做的是某種程度上的任何業務邏輯對象,它們由任務來訪問每個任務的輸出,無需手動傳遞「輸出」對象到每個業務邏輯對象提供運行一個簡單的方法。
我看到的是在TLS中創建輸出單例工廠並存儲task_id。但是問題出現在業務邏輯創建一個新的線程或線程池,並且這些線程在TLS中沒有task_id。這樣我需要有一個訪問父母的線程TLS。
另一種方法是在任務開始後簡單地獲取所有輸出。會有從那個時候不同的任務輸出,但至少,比什麼都沒有......
我在尋找的解決我的問題的乾淨漂亮的方式有任何建議或想法更好。謝謝。
upd:是的,它不是單數,我同意。我只是想能夠這樣訪問這個對象:
output << "message";
就是這樣。不用擔心在業務邏輯類之間傳遞指向輸出對象的指針。我需要每個任務都有一個全局輸出對象。
多線程+單身=死亡+銷燬(通常) –