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

标签 c linux multithreading thread-safety system-calls

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

最佳答案

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

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

大多数 glibc 应该是,IIRC,线程安全的,但是你总是需要检查手册页;或者,如果您不信任那些代码本身。没有 Elixir 可以免除您理解编程所针对的接口(interface)的责任。

关于c - 我怎么知道 linux 系统调用是否线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12025640/

相关文章:

Python 多处理 : DB connection not available

linux - Bash 脚本在 if elif else 语句中包含逻辑与和或

java - 主线程没有被中断

C++ : looking away to implement this scenario

Java,多个线程一次只执行一个

c - 在 fopen a+ 模式下从多个线程/进程写入锁定文件之前是否需要同步/刷新?

c - 一种方法会引发段错误,而另一种则不会。有什么不同?

c - 这个结构代码是如何工作的

c - 为什么 Apple 根据平台将 UInt32 定义为 long 或 int?

linux - 什么是 casper rw 循环文件,为什么我需要它才能在 USB 闪存驱动器上持久保存?