我怎么知道一个Linux系统调用是否是线程安全的?

linux中的一些函数用_r标记“线程安全”(例如gmtime_r),但是大部分系统调用都没有标记,也没有在手册中提及。 所以我的问题是:我怎么知道一个Linux系统调用是否线程安全? 谢谢!

Solutions Collecting From Web of "我怎么知道一个Linux系统调用是否是线程安全的?"

我认为你的意思是“图书馆功能”; 系统调用应该通过对线程的内核数据进行操作来保证线程安全。

答案是:检查手册页中的功能。 “_r”变体是专门为不可重入的函数提供的,这意味着传递给它们的额外参数在非“_r”版本中被静态地声明和修改。

大部分glibc应该是IIRC,线程安全的,但是你总是需要检查手册页; 或者,如果你不相信这些,代码本身。 没有银弹可以让你理解你所编程的接口的责任。