我們在我們的記錄,從傳統組件得到一個UTF-16字符串,並將其轉換爲UTF-8,我們寫入日誌使用std :: wstring_convert線程的成員函數是否安全?
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
。該轉換器被實例化,每個轉換後,我們做
auto utf8string = converter.to_bytes(utf16string);
這是在我們的代碼相當密集和多線程的部分做,我想轉換器的重新使用一個實例,但因爲std::wstring_convert
暴露了一個「狀態」,我擔心to_bytes
不是線程安全的,我們可以通過重用相同實例獲得的任何收益都會因過度鎖定而丟失(在這種情況下,我不會無論如何共享實例)。
那麼,是std::wstring_convert<>::to_bytes
線程安全嗎?
編輯:什麼我真的問一個澄清:鑑於std::wstring_convert<>
一個實例,如果2個或多個線程同時呼籲該實例to_bytes
使用不同的參數,是to_bytes
然後保證表現良好?
@LucDanton:我認爲它是「允許」記下重要部分的兩行摘要(「const表示線程安全」)作爲答案併爲其餘部分添加鏈接 - 然後我可以接受您的答案。 –
對上述註釋的澄清 - 「const表示線程安全」應該改爲「const表示線程安全並且to_bytes不是const,這意味着它可能改變實例狀態」 –
@LucDanton:duh!感謝注意 - 改變了它。當然它是'to_bytes'(facepalm) –