2011-08-17 11 views
0

私は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はスレッドローカルストレージをサポートしています。

どのような考えや警告がありますか?

おかげで、

ケニー

答えて

0

私はブーストスレッドローカルストレージを使用してファイルやcoutのいずれかにデータを集中オブジェクトと各ロガーを登録しました。

ケニー

関連する問題