2

RAII に基づいて、C++ メソッドのエントリ/終了ロガーを作成しています。使用法は次のようなものです。

void Class::Method()
{
    METHOD_NAME( "Class::Method" );   // I know: I could use __FUNCTION__ instead ;<)
    …
}

ロガー クラス:

#define METHOD_NAME(name)  TraceLogger  _traceLog(name);

TraceLogger::TraceLogger( const std::string& theContext )
{
    <lock mutex here>
    // Trace logging code here
}

TraceLogger::~TraceLogger()
{
    <lock mutex here>
    // Trace logging code here
}

問題は、コードがスレッドセーフでないことです。コードを保護するためにここにミューテックスを追加すると、正しく使用されますか?

私たちは Windows VS2008 ショップ (つまり、使用可能な std::mutex はありません) であり、自家製のスレッド ロック コードを使用しています。これを使ってみましたが、うまくいかないようです。

これを行う標準的な方法はありますか?

ありがとう、ポール

4

1 に答える 1