setlocale()的线程安全方法
Thread safe approach to setlocale()
本文认为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
这里有一个很好的答案
setlocale是线程安全的函数吗?
显然你可以使用
uselocale
正如对参考问题给出的答案之一的这个片段所表明的
#include <xlocale.h>
locale_t loc = newlocale(LC_ALL_MASK, "nl_NL", NULL);
uselocale(loc);
freelocale(loc)
// Do your thing
也许还有其他方法可以克服你的问题。
相关文章:
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 在 c++ 中从执行的 shell 命令获取返回状态的安全方法是什么?
- 在C++线程内实现多个计时器的最安全方法
- 最有效的安全方法将 std::map<int, std::shared_ptr> 转换为 std::<Base>map<int, std::shared_ptr<D
- 重新分配指针阵列的一部分的安全方法
- 将整数添加到数组值而无需调用它的最安全方法
- 使用括号运算符实现矩阵类的安全方法
- 将空隙动态铸造到类型的安全方法?
- C/通过套接字发送time_t的最安全方法
- 交换两个类实例的最安全方法
- 将uint16_t投射到wchar_t的安全方法
- 从字符串中读取溢出双倍作为'inf'的安全方法
- 期货是检查单个线程完成情况的安全方法吗
- 在C++中动态分配向量的安全方法是什么
- 在C++类中构建互斥保护的线程安全方法
- C++和跳出动态生成代码的安全方法
- 这是实现错误处理的安全方法吗
- 将长整数转换为字符数组的最安全方法是什么
- 缓存 PID 到端口映射窗口的安全方法
- 将无符号长整整除以无符号长整型的最安全方法