std :: to_string线程安全吗?

时间:2017-07-18 19:33:48

标签: c++ multithreading c++11 language-lawyer

我希望使用std::to_string将整数类型转换为字符串,但我看到了这一段:

  

std::to_string依赖std::locale进行格式化,以及   因此,可能会从多个线程并发调用std::to_string   导致部分序列化调用。

但我在这个主题上找不到任何其他内容,谷歌没有像MSDN那样提出任何问题。如果重要的话,我正在使用Visual Studio 2013.

这个线程安全吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:7)

std::to_string的行为就像调用sprintf[string.conversions]/7)一样,sprintf的行为取决于全局区域设置,可以通过{{1}修改(或setlocale,内部调用std::locale::global)。

[clocale.syn]/2中的措辞似乎暗示setlocale是线程安全的,因为它不允许std::to_string引入setlocale或{{1}的数据竞争}。