を使用しています
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
レガシー コンポーネントから UTF-16 文字列を取得し、ログに書き込む UTF-8 に変換する私たちのロガーで。コンバーターは、変換ごとにインスタンス化されます。
auto utf8string = converter.to_bytes(utf16string);
これは、コードのかなり集中的でマルチスレッド化された部分で行われ、コンバーターの 1 つのインスタンスを再利用したいのですが、それがstd::wstring_convert
「状態」を公開していることを見て、to_bytes
スレッドセーフではないのではないかと心配しています。同じインスタンスを再利用することで得られる利益は、その後必要となる過度のロックによって失われます (その場合、とにかくインスタンスを共有しません)。
それで、std::wstring_convert<>::to_bytes
スレッドセーフですか?
編集:私が本当に求めていることの明確化: の1つのインスタンスが与えられたstd::wstring_convert<>
場合、2つ以上のスレッドto_bytes
が異なる引数でそのインスタンスを同時に呼び出す場合、to_bytes
適切に動作することが保証されますか?