Stiamo usando unLe funzioni membro del thread std :: wstring_convert sono sicure?
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
in un logger di nostra che ottiene una stringa UTF-16 da un componente legacy e lo converte in UTF-8 che si scriva il registro. Il convertitore viene creata un'istanza per ogni conversione, su cui facciamo
auto utf8string = converter.to_bytes(utf16string);
Questo viene fatto in una parte abbastanza intenso e multi-threaded del nostro codice e mi piacerebbe ri-utilizzare un'istanza del convertitore, ma seing che std::wstring_convert
espone uno "stato", sono preoccupato che to_bytes
non è thread-safe e gli utili abbiamo potuto ottenere riutilizzando la stessa istanza sarei perso dal blocco eccessiva che sarebbe poi necessaria (nel qual caso non lo farei condividi comunque l'istanza).
Quindi, è std::wstring_convert<>::to_bytes
thread-safe?
EDIT: Un chiarimento su quello che sto veramente chiedendo: Data un'istanza di std::wstring_convert<>
, se 2 o più thread contemporaneamente chiamano to_bytes
su tale istanza con argomenti diversi, è to_bytes
quindi garantito a comportarsi bene?
@LucDanton: Penso che sia "permesso" per annotare un astratto 2 linee della parte importante ("const significa thread-safe") come una risposta e aggiungere il link per il resto - allora posso accettare la tua risposta. –
Una precisazione al commento di cui sopra - il "const significa thread-safe" dovrebbe essere cambiato in "const significa thread-safe e to_bytes non è const, il che significa che potrebbe cambiare lo stato istanza" –
@LucDanton: Duh! grazie per averlo notato - cambiato. Certo che è 'to_bytes' (facepalm) –