0

ブーストを使用してマルチスレッド C++ コードのロガーを作成しようとしています。これが私のコードです:

class logger
{
private:
    boost::mutex logMtx;
public:
    logger()
    {
    }
    ~logger()
    {
    }
    void logString(string z)
    {
        boost::mutex::scoped_lock lock(logMtx);
        std::cout<<z<<std::endl;
        std::cout.flush();      
    }
};

次に、このインスタンスを複数のスレッドで共有し (インスタンスは他のスレッドを作成する前にメイン スレッドで作成されます)、ログ記録のために logString 関数を呼び出します。うまくいかないようです。一部の行が切り捨てられます (文字列全体が印刷されません。つまり、"abcd" を渡すと、"bcd" が印刷されることがあります)。

このアプローチに何か問題がありますか?

4

0 に答える 0