【发布时间】:2017-12-23 20:09:19
【问题描述】:
我希望使用std::to_string 将整数类型转换为字符串,但我看到了这段:
std::to_string依赖于std::locale进行格式化,并且 因此从多个线程并发调用std::to_string可能 导致调用的部分序列化。
但是我找不到关于这个主题的任何其他内容,Google 没有提出任何建议,MSDN 也是如此。如果重要的话,我正在使用 Visual Studio 2013。
这个线程安全吗?如果是这样,怎么做?
【问题讨论】:
-
没有任何关于引号的内容表明它不是线程安全的。只是多个调用可能不会同时运行。这是性能问题,而不是安全问题。
-
@Nathan 请求问题是 std::locale 线程安全吗?
-
@NeilButterworth 部分不是。例如,
setlocale不是线程安全的,因此std::to_string可能会使用互斥锁来确保多个调用在调用时不会竞争。 -
-
对于
std::locale类本身:它是不可变的,所以不存在读/写竞争的可能性
标签: c++ multithreading c++11 language-lawyer