2

linux 中的一些函数由 _r (例如 gmtime_r )标记为“线程安全”,但大多数系统调用没有被标记,也没有在手册页中提及。所以我的问题是:我如何知道 linux 系统调用是否是线程安全的?谢谢!

4

1 回答 1

7

我认为您的意思是“库功能”;由于对线程的内核端数据进行操作,系统调用应该是线程安全的。

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

大多数 glibc 应该是 IIRC 线程安全的,但您始终需要查看手册页;或者,如果你不相信这些,代码本身。没有什么灵丹妙药可以免除您理解您正在编程的接口的责任。

于 2012-08-19T10:00:15.707 回答