私はBoostを初めて使用しました。スレッドアプリケーションで動作するロギングクラスを再設計しています。それはostreamオブジェクトのように動作するように設計されていましたが、 "動作しませんでした"(Davinciのヘリコプターへの参照を知っている人のために、Eddy Izzardの声で述べています)。 )だから、それは元々シングルトンとして設計された、いくつかのアプローチの後、私は(おそらくロガー::インスタンスを考えスレッドごとに1つのインスタンスを割り当てる(ブースト環境)
Logger &logger = Logger::instance();
logger << "He designed a helicopter you know...that did not work." << endl;
をスレッドに固有のロガーを返すことができます:
あなたは次のようにそれを使用する場合があります。 Boost Thread IDとLoggerクラスのインスタンスの間にマップを定義するためにSTLを使用するかもしれません。
次に、スレッドローカルストレージの何らかの形でこれを行うよりスマートな方法があるかもしれないと考え始めましたか?
マップ上の1つの問題は、スレッドが終了したときに定期的にロガーを削除するために家のクリーニングを行う必要があることです。私は物事を再発明しているように感じ始めました。
Boostはスレッドローカルストレージをサポートしています。
どのような考えや警告がありますか?
おかげで、
ケニー