是strtol,strtoll,strtod真正安全的

Are strtol, strtoll, strtod really thread safe?

本文关键字:安全 strtod strtol strtoll      更新时间:2023-10-16

我知道如何将字符串转换为int,float ...从来都不是一个新问题。经过一些文章后,建议我使用strtol,strtoll,strtod,所以我仔细研究了这些功能。

尽管strtol在其人页面上声称线程安全性,但它会修改errno,所以它真的安全吗?

如果没有,在C (不是C 11)中进行此类转换作业并保持线程安全的正确方法是什么?

来自 errno man页面:

errno由ISO C标准定义为可修改的lvalue 类型int,不得明确声明;Errno可能是宏。 errno是线程 - 局部;将其设置为一个线程不会影响其 在任何其他线程中的价值。

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

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

这是在errno线程安全的回答吗?。