首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >strtol、strtol、strtod真的是线程安全的吗?

strtol、strtol、strtod真的是线程安全的吗?
EN

Stack Overflow用户
提问于 2014-03-07 18:25:45
回答 2查看 1.5K关注 0票数 5

我知道如何将字符串转换为int,float...从来都不是一个新问题。在阅读了一些文章之后,有人建议我使用strtol、strtol、strtod,所以我仔细研究了这些函数。

虽然strtol在其手册页中声称线程安全,但它会修改errno,那么它真的是线程安全吗?

如果不是,那么在C++ (而不是C++11)中完成这类转换作业并保持线程安全的正确方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2014-03-07 18:27:39

errno man page

ISO标准将

errno定义为可修改的int类型的左值,并且不能显式声明;errno可以是宏。errno是线程本地;在一个线程中设置它不会影响它在任何其他线程中的值。

设置errno的函数将只为单个线程设置它,因此它是线程安全的。

票数 4
EN

Stack Overflow用户

发布于 2014-03-07 18:28:16

是的,因为errno本身不是一个普通的全局变量:errno是线程安全的。

这是在Is errno thread-safe?中回答的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22247478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档