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

时间:2012-08-19 09:56:36

标签: c linux multithreading thread-safety system-calls

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

1 个答案:

答案 0 :(得分:4)

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

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

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