std::to_string 线程安全吗?

Is std::to_string thread safe?

本文关键字:安全 线程 string to std      更新时间:2023-10-16

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

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

但是我找不到关于这个主题的任何其他内容,谷歌没有提出任何东西,MSDN也是如此。如果重要的话,我正在使用Visual Studio 2013。

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

std::to_string的行为就像它调用sprintf([string.conversions]/7(,sprintf的行为取决于全局语言环境,全局语言环境可以通过setlocale(或内部调用setlocalestd::locale::global(进行修改。

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