This paper说setlocale()
线程不安全。是否有任何线程安全的方法来设置区域设置。
我使用C ++进行编码,但是如果它有任何区别,那么语言环境将由C库中的函数使用。
这基本上就是我现在正在做的事情:
const char* loc_old = std::setlocale(ltype, 0);
std::setlocale(ltype, mylocale.c_str()); //change the locale
//call some C functions
std::setlocale(ltype, loc_old); //restore the locale
解决方案必须是可移植的,而不是>=C++11
答案 0 :(得分:1)
这里有一个很好的答案
Is setlocale thread-safe function?
基本上你,显然可以使用
uselocale
由于参考问题的答案之一的这个片段建议
#include <xlocale.h>
locale_t loc = newlocale(LC_ALL_MASK, "nl_NL", NULL);
uselocale(loc);
freelocale(loc)
// Do your thing
也可能有其他方法可以解决您的问题。