以下のようなマルチスレッドプログラムを書いたのですが、もっとエレガントに書くことはできないでしょうか?
std::atomic<T>を使ったら可能でしょうか?

■メンバ変数

 std::mutex m_Mtx;
 std::string m_str;

■生産者スレッド

 while( true )
 {
  lock_guard<std::mutex> Lock( m_Mtx );
  
  m_str += "何らかの文字列";
 }

■消費者スレッド

 std::string str;
 
 {
  lock_guard<std::mutex> Lock( m_Mtx );

  str = m_str;
  
  m_str.clear();
 }