別のスレッドでタスクを実行する C++ マルチスレッド アプリケーションがあります。各タスクには、その出力を処理および保存するオブジェクトがあります。各タスクは、異なるビジネス ロジック オブジェクトを作成し、おそらく別のスレッドまたはスレッドプールを作成します。
私がやりたいことは、タスクによって実行されるビジネス ロジック オブジェクトが、手動で「出力」オブジェクトを各ビジネス ロジック オブジェクトに渡すことなく、各タスクの出力にアクセスする簡単な方法を提供することです。
私が見ているのは、出力シングルトン ファクトリを作成し、task_id を TLS に格納することです。しかし問題は、ビジネス ロジックが新しいスレッドまたはスレッド プールを作成し、それらのスレッドが TLS に task_id を持たない場合です。このようにして、親のスレッド TLS にアクセスする必要があります。
もう 1 つの方法は、タスクの開始以降のすべての出力を単純に取得することです。その間に別のタスクからの出力がありますが、少なくとも何もないよりはましです...
私の問題を解決するためのクリーンできれいな方法の提案やアイデアを探しています。ありがとう。
更新:ええ、それはシングルトーンではありません。同意します。このオブジェクトに次のようにアクセスできるようにしたいだけです。
output << "message";
以上です。ビジネス ロジック クラス間で出力オブジェクトへのポインターを渡す心配はありません。タスクごとにグローバル出力オブジェクトが必要です。